我需要知道java泛型类型和Object类之间的区别。这是两个代码,都可以正常工作,我只需要知道它们之间的区别是什么:
程序1使用对象类:包a;
public class Generic {
private Object[] datastore;
private int size;
private int pos;
public Generic(int numEl) {
size = numEl;
pos = 0;
datastore = new Object[size];
}
public void add(Object a){
datastore[pos] = a;
pos++;
}
public String toString(){
String elements ="";
for (int i=0; i<pos; i++) {
elements += datastore[i] + " ";
}
return elements;
}
}
程序2使用泛型类型:程序包a;
public class Generic<T> {
private T[] datastore;
private int size;
private int pos;
public Generic(int numEl){
size = numEl;
pos = 0;
datastore = (T[]) new Object[size];
}
public void add(T a) {
datastore[pos] = a;
pos++;
}
public String toString(){
String elements ="";
for (int i=0; i<pos; i++) {
elements += datastore[i] + " ";
}
return elements;
}
}
Genercis是compile
时间概念,以确保type safety
。在runtime
private T[] datastore;
将被解释为
private Object[] datastore;
所以你可以说
Generic generic = new Generic(2);
generic.add("test"); //allowed
但是你不能说
Generic<Integer> generic = new Generic<Integer>(2);
generic.add("test"); // compiler error
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句