ジェネリック クラスが配列、またはプリミティブ配列でなければならないことを指定しようとしています。これまでのところ、これは私が取り組んでいるものです:
interface Foo<T> {
void process( T data );
}
public class Moo implements Foo<int[]> {
void process( int[] data ) {
// do stuff here
}
}
これはすべて完全に有効な Java コードであり、プリミティブ配列が Object を拡張するため機能します。この質問は、私が見つけ続けている他のすべてのJava配列の一般的な質問とは完全に異なることに注意してください。そのような状況では、人々はジェネリック型から配列を作成したいと考えています。
問題は、型 T が Object を拡張するものであれば何でもよいということです。私がしたいのは、次のようなことです:
<T extends ONLY ARRAYS>
また
<T extends ONLY PRIMITIVE ARRAYS>.
それは可能ですか?
編集:最終的な目標は、渡される配列型にコンパイル時のチェックを追加することです。現在、古いオブジェクトを渡すことができ、問題なくコンパイルされます。間違いは、実行時にクラス キャスト例外がスローされたときにのみ検出されます。実際、これが Java の Generics の要点であり、コンパイル時の型チェックを強化することです。