下面的逻辑需要明白如下两个概念:
举几个是Reifiable Types的例子,如下:
class A{} class B<T>{} class C<T>{ class D<X>{ } } class TestType{ public void test(){ //It refers to a non-generic class or interface type declaration. A a; // It is a parameterized type in which all type arguments are unbounded wildcards B<?> b; // It is a primitive type int c; // It is an array type (§10.1) whose element type is reifiable. int[] d; // It is a nested type where, for each type T separated by a ".", // T itself is reifiable. C<?>.D<?> e; // It is a raw type } }
举几个是Raw Types的例子,如下:
class A{} class B<T>{} class C<T>{ class D<X>{ } class E{ T e; } } class TestType{ public void test(){ // A non-generic class or interface type is not a raw type. A a; // The reference type that is formed by taking the name of // a generic type declaration // without an accompanying type argument list. B b; // An array type whose element type is a raw type. B[] c; // A non-static member type of a raw type R that is not inherited // from a superclass or superinterface of R C.D d; C.E e; } }
原文地址:https://www.cnblogs.com/extjs4/p/9209276.html
时间: 2024-10-11 16:07:20