[問題] Generic Type erasure

看板java作者 (~"~)時間14年前 (2011/05/30 02:38), 編輯推噓0(004)
留言4則, 4人參與, 最新討論串1/1
小弟剛學Java 有個問題想請教 就是關於Java generic 的type erasure 機制 書中提到說compiler 看到 generic的class 會做type erasure 所以基本上跟沒有generic 是差不多意思 所以不能寫出如 T MyClass = new T(); // T is generic class 之類的寫法 因為compiler 不知道T的type 沒辦法產生byte code 那請問一下 產生的byte code 既然沒有type 在run time 的時候又如何 把這個type 給"生"出來的呢? 第二個問題是為什麼C++的template 就可以支援上面那樣子的寫法阿@@?? (可以在template class 寫new出一個T物件) 是C++跟Java語言間implementation 的差異嗎? 謝謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.244.131

05/30 13:04, , 1F
Java generics 與 C++ template 是兩回事(也不能類比)。
05/30 13:04, 1F

05/30 23:46, , 2F
之前剛從C++學Java時也搞得一頭霧水XDDD
05/30 23:46, 2F

05/31 02:53, , 3F
runtime 沒生 type 啊, 完全當 Object 用
05/31 02:53, 3F

06/01 01:12, , 4F
謝謝!!
06/01 01:12, 4F
文章代碼(AID): #1DufAWsT (java)