因此,大家可以看到是冠军我很困惑于:为什么地图<String, int> list = new HashMap <String, int>不允许?
Map<String, int> list = new HashMap<String, int>
我在课堂上有点失去了对这个特定的主题,并希望如果有人能解释为什么,以及如何实际工作。
因此,大家可以看到是冠军我很困惑于:为什么地图<String, int> list = new HashMap <String, int>不允许?
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
来消除混淆。
谢谢,我现在得到了我现在困惑的地方 – 2013-05-01 16:46:39
+1随着挑剔:我会说“参考类型”来覆盖数组以及类。 – 2013-05-01 20:52:01
它应该是“参考类型”。它不仅可以是数组或类或接口类型,它也可以是参数化类型或类型参数。 – newacct 2013-05-02 03:19:59
在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以上代码
但是<字符串,整数>是可能的,因为它们是包装类型和对象可以使他们的
嗯,有道理 – 2013-05-01 16:46:17
如此满意回答:) – 2013-05-01 16:49:50
什么是确切的编译器的信息? – 2013-05-01 16:20:52
你为什么要调用地图'list'? :( – 2013-05-01 16:21:46
@DaveNewton过早混淆?;) – 2013-05-01 16:22:28