可能重複:
Why aren't Java Collections remove methods generic?爲什麼列出'remove()方法取Object而不是T?
有誰知道爲什麼MyDamnedUnclearList.remove()
方法採取Object element
而不是T element
(或V extends T element
)?
我失去了兩個小時才找到一個bug混合兩種int
和Integer
Java類型(在List<Thread>
列表...
可能重複:
Why aren't Java Collections remove methods generic?爲什麼列出'remove()方法取Object而不是T?
有誰知道爲什麼MyDamnedUnclearList.remove()
方法採取Object element
而不是T element
(或V extends T element
)?
我失去了兩個小時才找到一個bug混合兩種int
和Integer
Java類型(在List<Thread>
列表...
問題與現有的代碼和規範的向後兼容性做。
What are the reasons why Map.get(Object key) is not (fully) generic
所有在Javadoc的細節:
布爾刪除(對象o)
從此集合中刪除指定的 元素的單個實例(如果存在)(可選操作)。 更正式地說,如果此集合包含一個或多個這樣的元素,則刪除元素e使得(o == null?e == null: o.equals(e))。 如果此集合包含指定的元素(或等效地爲 ,如果此集合因該調用而更改),則返回true。
所以你看到它是否有相同的類型只是他們平等沒關係。
我讀過這個javadoc,我只是認爲這是無稽之談,IHMO。 – 2012-04-17 22:29:49
Java是一種非常古老的語言,經歷了許多次迭代,他們試圖像地獄一樣向後兼容。這與Python <3.0相似。不幸的是,Java沒有像Ruby和Python這樣的仁慈的獨裁者,所以打破東西的變化很難被放到語言中(我們有一個名爲oracle的邪惡的胖/懶惰獨裁者)。如果它真的困擾你,我建議你看看Scala(每個發行版都有相反的問題)。 – 2012-04-18 00:44:17
我經常在Scala或Haskell中使用並喜歡編碼:) – 2012-04-18 14:59:20
另外這一個http://stackoverflow.com/questions/857420/what-are-the-reasons-why-map-getobject-key-is-not-fully-generic其中我包括在我的回答 – 2012-04-17 22:21:02
嗯問題現在談論線程......怪異的編輯。 – 2012-04-17 22:23:06
線程只是我的實際情況,只是一個例子。我只是想表明它不是通用的,正如你在明確的答案中提到的那樣。 – 2012-04-17 22:27:17