为什么Map <string,int =“”> list = new HashMap <string,int =“”>不允许?</string,> </string,>

时间:2013-05-01 16:20:12

标签: java generics hashmap

因为你可以看到标题我很困惑:

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

我在课堂上对这个特定主题有点失落,如果有人能解释为什么以及它如何实际起作用,我将不胜感激。

2 个答案:

答案 0 :(得分:11)

类型int不是类,它是基本类型。通用类型参数必须分配类,而不是基本类型。你可以使用

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

代替。所有Java原始类型都有类包装器,从Java 1.5开始,自动装箱允许使用map.put("dummy", 1);等表达式,其中1被自动装箱为Integer

顺便提一下,拨打Map list会很困惑。您可以通过调用map来消除混淆。

答案 1 :(得分:1)

IN 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 

}

如同 这里代替&lt; K,V&gt;在

&LT;字符串,整数&GT; int是原始类型而我们can't make object of primitive type。 请参阅上面的// 1和// 2代码

但是&lt; String,Integer&gt;是可能的,因为它们是包装类型,对象可以由它们构成