作者RockLee (Now of all times)
看板java
標題[問題] 為何 Java 的 Generics 不支援 primitive
時間Mon Dec 5 11:18:19 2011
小弟是 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
1F:→ Chikei:因為Generics的runtime實作是把參數型別轉成Object執行 12/05 11:36
2F:→ Chikei:而primitive type不是Object的subclass 12/05 11:41
3F:推 gwokae:用wrapper class,所有primitive type都有對應的wrapper 12/05 12:20
4F:→ RockLee:感謝C大與G大迅速的回應 12/05 15:43
5F:→ RockLee:但Java為何要這樣的實作呢? 有什麼好處或不得已的原因嗎? 12/05 15:44
6F:→ RockLee:為何不像C++的template一樣用代換方式產生實際的code呢? 12/05 15:46
7F:→ Chikei:因為generics是JDK5的東西,而java選了向下相容的實作 12/05 17:53
8F:推 gwokae:primitive不是物件,所以很多人很不滿~所以算是缺點吧? 12/05 19:55
9F:→ qrtt1:不是物件,但是很有效率啊xd 12/05 22:30
10F:推 PsMonkey:generics 有繼承 12/06 09:50