ジェネリッククラスを配列、さらにはプリミティブ配列にする必要があると指定しようとしています。これまでのところ、私が働いているのはこれです:Javaのジェネリックと配列型、あなたが考えているものではありません(ジェネリック型の配列など)
interface Foo<T> {
void process(T data);
}
public class Moo implements Foo<int[]> {
void process(int[] data) {
// do stuff here
}
}
これは完全に有効なJavaコードであり、プリミティブ配列はオブジェクトを拡張するために機能します。この質問はと全く異なるであり、私が探し続ける他のすべてのJava配列の一般的な質問と同じです。そのような状況では、人々はジェネリック型から配列を作成したいと考えています。
問題は、タイプTは、オブジェクトを拡張するものであればどれでもかまいません。私が欲しいのような何かをすることです:
<T extends ONLY ARRAYS>
または
<T extends ONLY PRIMITIVE ARRAYS>.
可能ということですか?
EDIT:最終目標は、渡される配列型のコンパイル時のチェックを追加することです。現在、古いオブジェクトは渡すことができ、うまくコンパイルできます。間違いは、クラスキャスト例外がスローされたときにのみ実行時に検出されます。コンパイル時の型チェックを強力にするために、これはJavaのGenericsの全般的なポイントです。
の配列としてのタイプを返すために? – Jeffrey
私は、「可能」であることに同意します。私の腸の感覚は、オブジェクトよりもプリミティブクラスの配列のスーパータイプが他にないことを示しています。 (クラスクラスにはisArray()があります) – esej
異なるプリミティブ型のデータで画像を処理するための単一のインタフェースです。代替案は、それぞれのタイプに対して異なるインターフェースを用意することです。これは悪いクルージングです。例、Foo_S32、Foo_U8、Foo_F32、...など。 –