什么可能是ParameterizedType的一个实例?

时间:2015-08-22 13:36:11

标签: java generics reflection

在阅读ParameterizedType接口的文档后,我认为ParameterizedType的实例的示例可以是任何参数化类型,例如我的代码中的col

  public class a0 {

     public static void main(String[] args) {

        Collection<String> col = new ArrayList<String>();
        col.add("a");
        col.add("b");
        col.add("c");

        assert col instanceof ParameterizedType; // line No. 10
     }
  }

但我明白了:

Exception in thread "main" java.lang.AssertionError
at a0.main(a0.java:10)

那么,什么可能是ParameterizedType的一个实例?

我想知道这一点,因为我试图了解一个更大的程序,其中有这样一个片段:

public static void printType(Type type) {
...
if (type instanceof ParameterizedType) {
... }
}

但我不知道if陈述中的条件何时为真......

1 个答案:

答案 0 :(得分:3)

ParameterizedType表示参数化类型的反射类型。参数化类型本身不是该类的实例。

类似地,Field实例用于表示某种类型的类成员字段。这并不意味着这样的字段将是Field的实例。

ParameterizedType的示例如下:

Type[] genericInterfaces = col.getClass().getGenericInterfaces();
Type type = genericInterfaces[0];

assert type instanceof ParameterizedType;