【发布时间】:2013-01-26 08:59:19
【问题描述】:
我对 Java 中的泛型和 instanceof 运算符有疑问。
做这样的instanceof check是不可能的:
if (arg instanceof List<Integer>) // immposible due to
// loosing parameter at runtime
但是可以运行这个:
if (arg instanceof List<?>)
现在我的问题来了 - arg instanceof List 和 arg instanceof List<?> 之间有什么区别吗?
【问题讨论】:
-
我认为前者可能会在 IDE 中给您一个警告:“使用原始类型”(取决于您使用的 IDE),而后者不会给您这样的警告。但除此之外,这两个是一样的。泛型实际上只是一个编译器提示,它们会被编译器丢弃。
-
好的,但是如果我有泛型类
class A<T>,据说最好这样做:A<?> tab[] = new A<?>[2],而不是:A tab[] = new A[2],因为在这个例子中,第一个''将至少部分执行类型检查''。 -
部分?你的意思是,检查添加的对象是否至少是实例对象?这不是类型检查...
标签: java generics instanceof