2010-07-16 99 views
6

可能重複:
Java Generics: Why Does Map.get() Ignore Type?Java Map <K,V>:爲什麼get(object)沒有得到(K)?

可能有人請解釋爲什麼與地圖定義

V put(K key,V value); 
V get(Object key); 

爲什麼get沒有定義爲:

V get(K key) 

同樣,爲什麼這些方法分別鍵入爲Object,而不是KV

boolean containsKey(Object key); // Why not K? 
boolean containsValue(Object value); // Why not V? 

這是一個向後兼容的東西(1.5前)?

+0

可能的重複http://stackoverflow.com/questions/1455138/java-generics-why-does-map-get-ignore-鍵入 – tonio 2010-07-16 12:22:57

+0

同意 - 謝謝。將標記爲重複。 – 2010-07-16 12:27:37

回答

0

模板的目標是加強在編譯時間控制(你不能把貓在狗列表),並通過抑制顯式強制轉換來簡化程序員的代碼。

在這些方法中,不需要模板。如果你比較(與「等於」一隻貓和一隻狗),它沒有發生。更多,不同類的兩個objets可以是「等於」!限制性太強的方法簽名會限制地圖的使用。

注意:模板信息僅在編譯時進行驗證,但之後會丟失。在運行時,通過反射,您可以將貓放入狗列表中...

相關問題