1

所以你可以看到我很困惑的标题:

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

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

4

2 回答 2

11

该类型int不是一个类,它是一个原始类型。泛型类型参数必须分配给类,而不是原始类型。您可以使用

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

反而。所有 Java 原始类型都有类包装器,从 Java 1.5 开始,自动装箱允许表达式,例如map.put("dummy", 1);, 其中自动装箱1Integer.

顺便说一句,调用Map list. 您可以通过调用它来消除混乱map

于 2013-05-01T16:21:31.060 回答
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> 中

<String,int> int是原始类型,而我们can't make object of primitive type。请参阅上面的代码中的 //1 和 //2

但是 <String,Integer> 是可能的,因为它们是包装器类型并且可以由它们制成对象

于 2013-05-01T16:39:22.143 回答