import java.lang.reflect.Array;
import java.util.Arrays;public class ArrayMaker<T> {
private Class<T> kind; public ArrayMaker(Class<T> kind) {
this.kind = kind;
} @SuppressWarnings("unckecked")
T[] create(int size) {
return (T[]) Array.newInstance(kind, size);
} public static void main(String[] args) {
ArrayMaker<String> stringMaker = new ArrayMaker<String>(String.class);
String[] stringArray = stringMaker.create(10);
System.out.println(Arrays.toString(stringArray));
}
}
ouput:[null, null, null, null, null, null, null, null, null, null]为什么输出全是NULL?我知道是因为擦除,但是不明其中细节。。
import java.util.Arrays;public class ArrayMaker<T> {
private Class<T> kind; public ArrayMaker(Class<T> kind) {
this.kind = kind;
} @SuppressWarnings("unckecked")
T[] create(int size) {
return (T[]) Array.newInstance(kind, size);
} public static void main(String[] args) {
ArrayMaker<String> stringMaker = new ArrayMaker<String>(String.class);
String[] stringArray = stringMaker.create(10);
System.out.println(Arrays.toString(stringArray));
}
}
ouput:[null, null, null, null, null, null, null, null, null, null]为什么输出全是NULL?我知道是因为擦除,但是不明其中细节。。
你创建了一个String数组,但数组中的元素没有赋值,输出当然是null
你创建了数组,但是没有创建数组中的对象。
就像
String[] strs = new String[10];
一样的原因。