根据java中的类型擦除理论,我认为以下两个代码段应该编译为相同的java类,因此具有相同的字节码。java通用<T>与Generic相同吗?
public class Generic {
private Object t;
public void hi() {
System.out.println(t);
}
}
的javac Generic.java
MV Generic.class Generic1.class
public class Generic<T> {
private T t;
public void hi() {
System.out.println(t);
}
}
的javac Generic.java
MV Generic.class Generic2.class
比较Generic1.class和Generic2.class,它们是完全不同的。
那么我的想法有什么问题?以及通用如何编译为字节码?
[编辑]
javap的-v好的尖端,谢谢。
但在短时间内我无法获得与字节码的细节理解。
我想知道通用编译与删除对象。
@ElliottFrisch我没有看到你提到的额外的演员 - '比较输出只给常量(那是什么事情开始哈希,是吧?)。不错的提示'javap -v'虽然! – Alec