私は配列を含むオブジェクトを持っていますが、配列の型は毎回違います。ジェネリック型とJavaのプリミティブを使用するにはどうすればいいですか
私は事は、これはプリミティブ型(int型、ダブル、...)では動作しませんし、それは私がオブジェクト(整数、ダブルで動作可能ということである
class MyObject<T>
{
public T [] data;
}
ような何かを行うことができます... )。
これを回避する手段はありますか? adavnce
私は配列を含むオブジェクトを持っていますが、配列の型は毎回違います。ジェネリック型とJavaのプリミティブを使用するにはどうすればいいですか
私は事は、これはプリミティブ型(int型、ダブル、...)では動作しませんし、それは私がオブジェクト(整数、ダブルで動作可能ということである
class MyObject<T>
{
public T [] data;
}
ような何かを行うことができます... )。
これを回避する手段はありますか? adavnce
で
ありがとうございますautoboxing in Javaは、あなたが探している正確に何を得ることをご承知おき下さい。 リンクから、このコード例を参照してください
// List adapter for primitive int array
public static List<Integer> asList(final int[] a) {
return new AbstractList<Integer>() {
public Integer get(int i) { return a[i]; }
// Throws NullPointerException if val == null
public Integer set(int i, Integer val) {
Integer oldVal = a[i];
a[i] = val;
return oldVal;
}
public int size() { return a.length; }
};
}
get()
その方式が自動的Integer
に変換され、昔ながらのデータ・タイプint
を返しています。同様に、set()
メソッドはInteger
を受け取り、要素を配列に割り当てています。
オートボクシングは即座に明白な機能ではありませんが、自動オブジェクト作成を処理します。
C++でテンプレートを使用できるように、ジェネリックでプリミティブを使用することはできません。
プリミティブを使用するコレクションが必要な場合は、http://trove.starlight-systems.com/を参照してください。このコレクションタイプは、ジェネリックの一部として渡すことができます。つまり、プリミティブ型を渡す代わりに、コレクション型を渡します。
MyObject<List<String>> containsStrings = ...
MyObject<TIntArrayList> contains_ints = ...
これはできません。プリミティブ配列をそれらの等価物に変換します。
+1。素晴らしい図書館! –