oracle 文档说泛型是使用一种技术调用类型擦除在 java 中实现的,这就是它的工作原理。
因此,如果我有一个通用类,请说 Container 如下:
class Container<T>{
T initialValue;
List<T> valueList=new ArrayList<T>();
public List<T> getValueList(){
return valueList;
}
}
Run Code Online (Sandbox Code Playgroud)
经过类型擦除处理后,它的等效类看起来像这样:
class Container{
Object initialValue;
List valueList=new ArrayList();
public List getValueList(){
return valueList;
}
}
Run Code Online (Sandbox Code Playgroud)
如果这里有错请指正
同样,如果将上面的类修改如下
class Container<T>{
T initialValue;
List<T> valueList=new ArrayList<T>();
T[] arrayValue;
public Container(T[] array){
arrayValue=array;
}
public List<T> getValueList(){
return valueList;
}
}
Run Code Online (Sandbox Code Playgroud)
这不等于吗???
class Container{
Object initialValue;
List valueList=new ArrayList();
Object[] arrayValue;
public Container(Object[] array){
arrayValue=array;
}
public List getValueList(){ …
Run Code Online (Sandbox Code Playgroud)