[問題] 為何 Java 的 Generics 不支援 primitive

看板java作者 (Now of all times)時間14年前 (2011/12/05 11:18), 編輯推噓3(307)
留言10則, 5人參與, 最新討論串1/1
小弟是 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

12/05 11:36, , 1F
因為Generics的runtime實作是把參數型別轉成Object執行
12/05 11:36, 1F

12/05 11:41, , 2F
而primitive type不是Object的subclass
12/05 11:41, 2F

12/05 12:20, , 3F
用wrapper class,所有primitive type都有對應的wrapper
12/05 12:20, 3F

12/05 15:43, , 4F
感謝C大與G大迅速的回應
12/05 15:43, 4F

12/05 15:44, , 5F
但Java為何要這樣的實作呢? 有什麼好處或不得已的原因嗎?
12/05 15:44, 5F

12/05 15:46, , 6F
為何不像C++的template一樣用代換方式產生實際的code呢?
12/05 15:46, 6F

12/05 17:53, , 7F
因為generics是JDK5的東西,而java選了向下相容的實作
12/05 17:53, 7F

12/05 19:55, , 8F
primitive不是物件,所以很多人很不滿~所以算是缺點吧?
12/05 19:55, 8F

12/05 22:30, , 9F
不是物件,但是很有效率啊xd
12/05 22:30, 9F

12/06 09:50, , 10F
generics 有繼承
12/06 09:50, 10F
文章代碼(AID): #1Et3Vz9m (java)