我获取到的不是 ParameterizedType
时间: 2024-05-16 18:17:47 浏览: 61
谈谈Java类型中ParameterizedType,GenericArrayType,TypeVariabl,WildcardType
ParameterizedType 是 Java 中的一个接口,用于表示参数化类型,例如 List<String>。它是 Type 接口的子接口。如果你获取到的是一个 ParameterizedType 对象,那么说明你得到了一个参数化类型的信息,其中包含了该类型的原始类型、类型参数等信息。
在 Java 中,我们可以使用反射机制获取一个类的信息,包括类名、字段、方法、注解等。当我们需要获取一个类的泛型信息时,例如获取 List<String> 的泛型信息,我们可以使用 TypeToken 类来实现。TypeToken 是 Gson 库提供的一个类,它继承了 Type 类,并提供了一些方便的方法来获取泛型信息。
下面是一个示例代码,演示了如何使用 TypeToken 来获取 List<String> 的泛型信息:
```java
TypeToken<List<String>> token = new TypeToken<List<String>>() {};
Type type = token.getType();
if (type instanceof ParameterizedType) {
ParameterizedType parameterizedType = (ParameterizedType) type;
Type[] typeArguments = parameterizedType.getActualTypeArguments();
for (Type typeArgument : typeArguments) {
System.out.println(typeArgument.getTypeName());
}
}
```
这段代码中,我们先创建了一个 TypeToken 对象,通过该对象来获取 List<String> 的泛型信息。然后,我们判断获取到的 type 是否为 ParameterizedType 类型,如果是,则强制转换为 ParameterizedType 对象,并使用 getActualTypeArguments() 方法获取实际类型参数。最后,我们可以遍历实际类型参数,输出其类型名称。
阅读全文