看板 java 關於我們 聯絡資訊
小弟是 Java 新手,有個問題想請教一下, 為何 Java 的 Generics 無法支援 primitive type 呢? Ex. Hashtable<Integer, Character> -> ok Hashtable<int, char> -> compile error 為何 Java 不採用類似 C++ template 的方式來實現 generic programming 呢? Java 這樣的限制跟 C++ template 相比有什麼好處或不得已的原因嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.126.30.95
Chikei:因為Generics的runtime實作是把參數型別轉成Object執行 12/05 11:36
Chikei:而primitive type不是Object的subclass 12/05 11:41
gwokae:用wrapper class,所有primitive type都有對應的wrapper 12/05 12:20
RockLee:感謝C大與G大迅速的回應 12/05 15:43
RockLee:但Java為何要這樣的實作呢? 有什麼好處或不得已的原因嗎? 12/05 15:44
RockLee:為何不像C++的template一樣用代換方式產生實際的code呢? 12/05 15:46
Chikei:因為generics是JDK5的東西,而java選了向下相容的實作 12/05 17:53
gwokae:primitive不是物件,所以很多人很不滿~所以算是缺點吧? 12/05 19:55
qrtt1:不是物件,但是很有效率啊xd 12/05 22:30
PsMonkey:generics 有繼承 12/06 09:50