根據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