Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我认为由于类型擦除,使用instanceofandclass literals是不允许的parameterized generic typesexcept unbounded wild card types。为什么 Java 语言设计者允许这个例外?对于无界通配符类型没有任何类型擦除的作用吗?
instanceof
class literals
parameterized generic types
unbounded wild card types
关键是一个对象知道它的具体类——但不知道它的泛型类型参数。因此,如果我们构造一个ArrayList<Integer>,它在执行时就知道它是ArrayList某种类型的- 但它不知道该Integer部分。
ArrayList<Integer>
ArrayList
Integer
“ArrayList某种”部分正是什么ArrayList<?>意思,这就是为什么:
ArrayList<?>
if (foo instanceof ArrayList<?>)
已验证。它等同于使用原始类型:
if (foo instanceof ArrayList)