下面的代码编译没有错误...一次我会更喜欢它失败:/
Map <Character, Double> m = new HashMap <Character, Double>();
m.get(new String());
由于编译器知道此映射中使用的键是Character类型,因此使用String键应标记为不正确。
我缺少什么?
答案 0 :(得分:11)
你没有遗漏任何东西。所有Map#get()
来电只需Object
。
根据实现,当您将ClassCastException
传递给String
时,您可能会看到(运行时)Map<Character, Double>#get()
。
答案 1 :(得分:1)
如果您尝试运行此代码,则缺少(可选)运行时异常(ClassCastException
)。
答案 2 :(得分:1)
方法get没有使用泛型参数进行参数化,结果只是。
您也可以
m.get(1L); //m.get(Object o);
参数化方法
m.put(new String(), 0.0); //Fail
//The method put(Character, Double) in the type Map<Character,Double> is not applicable for the arguments (String, double)
m.put(new Character('c'), 0.0); //Ok
答案 3 :(得分:1)
Map.get()以Object为参数:java.util.Map#get
答案 4 :(得分:0)
get
检索参数为.equals()
的对象。对象可能是.equals()
到另一个类的对象。