2016-12-05 58 views
0

一個奇怪的問題是:EnumMap的構造函數裏爲什麼需要enum.class? 它知道它的類型,因爲它在模板過去了......爲什麼EnumMap的構造函數中需要enum.class?

含義,爲什麼我們必須使用:EnumMap<E,V> e = new EnumMap<E,V>(E.class);而我們不能只用:EnumMap<E,V> e = new EnumMap<E,V>();

回答

3

「它知道它的類型,因爲它在模板傳遞...「

模板的概念在Java中不存在。泛型在類型檢查期間使用,但在運行時不使用數據,這意味着在運行時實際代碼將爲EnumMap e = new EnumMap()

假設該類用於確定初始化地圖大小的唯一枚舉值的數量,並且由於該信息無法通過類型系統傳遞給類(由於泛型的限制),因此您需要傳遞確切的Class實例。

+0

很好的答案,我用C++混合模板。 –

相關問題