在阅读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
陈述中的条件何时为真......
答案 0 :(得分:3)
ParameterizedType
是表示参数化类型的反射类型。参数化类型本身不是该类的实例。
类似地,Field
实例用于表示某种类型的类成员字段。这并不意味着这样的字段将是Field
的实例。
ParameterizedType
的示例如下:
Type[] genericInterfaces = col.getClass().getGenericInterfaces();
Type type = genericInterfaces[0];
assert type instanceof ParameterizedType;