![]() |
1
2
你的警告源于
|
![]() |
2
2
这包括在 Java Generics FAQ -请参见问题“无界通配符参数化类型和原始类型之间的区别是什么?”在 parameterized types section . |
![]() |
3
1
我使用Java1.60Sy14,编译器在编译该代码时不给我任何警告。 |
![]() |
4
1
这可能是适合以下情况的时间之一:
除非你愿意
总是
使用
|
![]() |
5
-1
简而言之,没有办法指定类型参数。这是因为类对象(例如,list.class,而不仅仅是class.class)不理解泛型类型参数——它在编译期间被清除。 我的IDE,Intellij的想法,给出了同样的警告。这是IDE太激进了。您可以使用IDEA抑制警告(它会生成@SuppressWarnings注释),但要解决此问题的代码(如Robert Munteau的巧妙解决方法)确实引入了一些讨厌的设计,只是为了避免出现确实不正确的IDE消息—JDK不会将此情况视为擦除。 编辑:既然投了反对票,我至少应该证明我的想法是正确的。 考虑以下几点:
它表示类型为的类对象:
它不能表示以下类型:
因为它不知道给定的列表是否真的有一个泛型参数或者它将是什么。list.class对象必须表示所有类型,就参数化类而言。 JDK没有将此视为不安全操作的证据是,如果编译代码,它不会给您任何警告。 因此,IDE过于敏感。尽管发问者没有指定他使用哪一个IDE,但我用Intellij IDEA 8.1.2看到了这种行为。 |