我正在研究 Java 中的泛型。 我研究过在编译期间,删除会删除所有通用信息。
在这里,我研究了所有的T都换成了Object。
Integer v = display(2);
String d = display("3");
public <T> T display(T i){
return i;
}
我希望它会变成
Integer v = (Integer)display(2);
String d = (String) display("3");
public Object display(Object i){
return i;
}
那么,我的假设对吗?
谢谢。
最佳答案
你基本上已经知道了。编译器使用通用参数类型来验证代码,但生成的字节码替换为不同的类。
对于未绑定(bind)的通用参数,如 <T>
, 它将是 Object
.但是,如果声明是 <T extends Comparable>
,替换的类将是 Comparable
而不是 Object
.
编辑:关于 Java 泛型的重要信息,尽管部分信息非常密集:
Java 泛型常见问题解答 - 常见问题
http://www.angelikalanger.com/GenericsFAQ/JavaGenericsFAQ.html
关于java - 详细删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4750285/