我不知道为什么我可以将任何类型的值传递给HashMap.containsKey()方法。我假设这种方法是一个实例方法(纠正我,如果我错了)HashMap Class这应该是通用类型的约束。如果JAVA并不想限制它,为什么用HashMap.put()方法需要匹配它的参数与...为什么不用HashMap.containsKey方法约束参数类型?
HashMap<String, String> map = new HashMap<String, String>();
// invalid
// map1.put(1, "a");
型我不能把int
价值关键我HashMap
map
具有密钥类型String
。 containsKey()和put()方法有什么不同?
public static void main(String[] args) {
HashMap<String, String> map1 = new HashMap<String, String>();
map1.put("1", "a");
map1.put("2", "b");
map1.put("3", "c");
if (map1.containsKey(1)) {
System.out.println("contain");
}
else {
System.out.println("not contain");
}
}
在上面的代码中,输出not contain
,编译器没有反对。如果是这样,它会防止发生这种错误!我对吗?如果没有,请引导我说实话。
感谢您阅读我的问题!
这是不正确的。如果是这种情况,他们为什么要在'Map'接口中将'get(Object)'改成'get(K)'? – Brian
@Brian重读我最初写的东西:泛型,你是对的。我认为我真的打算输入类而不是接口,但即使这可能不完全准确。但是,因为这并不是真正的答案的重要部分...编辑。 –