所以你可以看到我很困惑的标题:
Map<String, int> list = new HashMap<String, int>
我在这个特定主题的课堂上有点迷失,如果有人能解释它为什么以及如何实际工作,我将不胜感激。
该类型int
不是一个类,它是一个原始类型。泛型类型参数必须分配给类,而不是原始类型。您可以使用
Map<String, Integer> list = new HashMap<String, Integer>();
反而。所有 Java 原始类型都有类包装器,从 Java 1.5 开始,自动装箱允许表达式,例如map.put("dummy", 1);
, 其中自动装箱1
为Integer
.
顺便说一句,调用Map
list
. 您可以通过调用它来消除混乱map
。
在 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> 是可能的,因为它们是包装器类型并且可以由它们制成对象