2013-05-01 100 views
1

因此,大家可以看到是冠軍我很困惑於:爲什麼地圖<String, int> list = new HashMap <String, int>不允許?

Map<String, int> list = new HashMap<String, int> 

我在課堂上有點失去了對這個特定的主題,並希望如果有人能解釋爲什麼,以及如何實際工作。

+0

什麼是確切的編譯器的信息? – 2013-05-01 16:20:52

+3

你爲什麼要調用地圖'list'? :( – 2013-05-01 16:21:46

+3

@DaveNewton過早混淆?;) – 2013-05-01 16:22:28

回答

11

類型int不是一個類,它是一個原始類型。泛型類型參數必須分配類,而不是原始類型。您可以使用

Map<String, Integer> list = new HashMap<String, Integer>(); 

改爲。所有的Java原始類型都有類包裝,自Java 1.5起,自動裝箱允許表達式如map.put("dummy", 1);,其中1被自動裝箱爲Integer

順便提一下,撥打Maplist可能會引起混淆。你可以通過調用map來消除混淆。

+0

謝謝,我現在得到了我現在困惑的地方 – 2013-05-01 16:46:39

+0

+1隨着挑剔:我會說「參考類型」來覆蓋數組以及類。 – 2013-05-01 20:52:01

+0

它應該是「參考類型」。它不僅可以是數組或類或接口類型,它也可以是參數化類型或類型參數。 – newacct 2013-05-02 03:19:59

1

在Java中像下面一些事情發生

public interface Map<K, V> { 
    public K getKey();    
    public V getValue();   
} 

public class HashMap<K, V> implements Map<K, V> { 

    private K key;    //1 
    private V value;   //2 

    public K getKey() { return key; } 
    public V getValue() { return value; } 
//other getter setter methods 

} 

由於在 這裏到位<的K,V>中

<字符串,int>的int是基本類型,我們can't make object of primitive type。 看到// 1和// 2以上代碼

但是<字符串,整數>是可能的,因爲它們是包裝類型和對象可以使他們的

+0

嗯,有道理 – 2013-05-01 16:46:17

+0

如此滿意回答:) – 2013-05-01 16:49:50

相關問題