Java Generics在编译时没有问题

Ele*_*eco 4 java generics

下面的代码编译没有错误...一次我会更喜欢它失败:/

    Map <Character, Double> m = new HashMap <Character, Double>();
    m.get(new String());
Run Code Online (Sandbox Code Playgroud)

由于编译器知道此映射中使用的键是Character类型,因此使用String键应标记为不正确.

我错过了什么?

Mat*_*all 11

你没有遗漏任何东西.所有Map#get()电话都只需要Object.

根据实现,您可能会ClassCastException在将a传递String给a 时看到(运行时)Map<Character, Double>#get().


这就是为什么Map#get()不完全通用的原因.