Java泛型中类型信息的擦除
来源:互联网 发布:汉密尔顿学院 知乎 编辑:程序博客网 时间:2024/05/16 18:01
public class Erased<T>{
private final int SIZE = 100;
public static void f(Object arg){
if(arg instanceof T){} //Error
T var = new T();//Error
T[] array = new T[SIZE];//Error
T[] array = (T)new Object[SIZE];//Unchecked warning
}
}
偶尔你在编程的时候绕过这些事情,但是有的时候必须通过插入类型标签来作类型擦除的补偿。这就是说你必须准确的插入类型对象用它作为类型信息的表达。
其实以上出错就是由于类型信息的缺失。
类型的补偿,补偿的方式通过模板方法来实现:
abstract class GenericWithCreate<T>{
final T element;
GenericWithCreate(){element = create();}
abstract T create();
}
class X {}
class Creator extends GenericWithCreate<X>{
X create(){ return new X();}
void f(){
System.out.println(element.getClass().getSimpleName(););
}
}
public class CreatorGeneric{
public static void main(String[] args){
Creator c = new Creator();
c.f();
}
}
//output
X
- Java泛型中类型信息的擦除
- java泛型中类型擦除以及类型擦除带来的问题
- Java的类型擦除
- Java中泛型是类型擦除的
- Java中泛型是类型擦除的
- Java的泛型是类型擦除的
- Java泛型的类型擦除
- Java泛型的类型擦除
- java的泛型与类型擦除
- Java泛型的类型擦除
- Java泛型 类型擦除
- Java类型擦除
- java泛型-类型擦除
- Java泛型-类型擦除
- java泛型-类型擦除
- Java中泛型 类型擦除
- Java泛型:类型擦除
- Java中泛型 类型擦除
- js 幻灯片
- Apache、Tomcat整合
- ARM AT91SAM9260 移植Linux-2.6.30流程
- Spring装配构造方法
- 正则表达式、、
- Java泛型中类型信息的擦除
- 3 idiots
- JS 全选全不选
- Bootstap-v1.15移植流程
- Pointers to Arrays
- U-boot1.3.4移植流程
- 发送电子邮件
- Linux kernel移植流程
- 如何从零开始设计嵌入式产品