Javaでは ではなく がArray.newInstance()
返されることに気付きました。Java がジェネリック型をサポートする前にこのメソッドが導入されたので、これは理解できます。Object
T[]
ただし、これに相当する汎用バージョンがないことは驚きです。Java 7Arrays.copyOf
は同じではありません。新しいダミー配列を作成するのではなく、パラメーターの内容をコピーします (内部にすべての null オブジェクトがあります)。
これの実装は些細なことのように思えるので、それを JRE に追加しない理由はありますか? または私はそれを見つけることができませんか?
アップデート
質問の誤解を防ぐために、私自身の「些細な」実装を提供するようです。
class MyArrayUtil {
//Generic version for classes
@SuppressWarnings("unchecked")
public static <T> T[] newArrayOf(T[] t, int len){
return (T[]) Array.newInstance(t.getClass().getComponentType(), len);
}
//For array of int
public static int[] newArrayOf(int[] t, int len){
return new int[len];
}
//For other primitive types...
}
このコードは質問の回答ではないため、回答として投稿していません。問題は、実装方法ではなく、理由および/または既存のコードに関するものです。
アップデート
コードを に似るように更新しましArrays.copyOf
た。利点は、プログラマーがパラメーターの型を簡単に変更して、コードを別の型に調整できることです。Array.newInstance
また、 for プリミティブ型の使用を排除しました。