2011-03-16 85 views
1

我想知道爲什麼來自Apache Commons的UnmodifiableMap.decorate(Map map)Map上運行,並且返回Map而不是Map<K,V>。這兩種方法有什麼區別?Map vs Map <K,V>

+2

相關,['java.util.Collections.unmodifiableMap()'](http://download.oracle.com/javase/6/docs/api/java/util/Collections.html#unmodifiableMap( java.util.Map))是類型參數化的。 – rlibby 2011-03-16 09:34:48

回答

4

我相信Apache Commons集合早於泛型,並且尚未針對它們進行更新。

您不妨看看this unofficial version這是Apache Commons Collections的泛型端口,或者在Guava上查看支持其他集合的替代庫。 (當然還有其他的。)

+0

謝謝你的回答。乾杯 – voo 2011-03-16 09:43:43

2

我認爲這是因爲某種向後兼容性。 Map<K,V>只能在Java 5及更高版本中使用。

1

喬恩可能是對的。

您可能能夠在重建時轉換爲地圖。

Map<K,V> myMap = (Map<K,V>)UnmodifiableMap.decorate(Map map); 
相關問題