泛型参数在方法里获得class类对象
时间: 2023-11-30 21:03:18 浏览: 105
可以使用Java的反射机制获取泛型参数的class类对象。具体实现可以通过以下代码:
```java
public static <T> Class<T> getGenericType(Class<?> clazz) {
Type type = clazz.getGenericSuperclass();
if (type instanceof ParameterizedType) {
ParameterizedType paramType = (ParameterizedType) type;
Type[] typeArguments = paramType.getActualTypeArguments();
if (typeArguments != null && typeArguments.length > 0) {
Type typeArgument = typeArguments[0];
if (typeArgument instanceof Class) {
return (Class<T>) typeArgument;
}
}
}
return null;
}
```
调用该方法时,传入包含泛型参数的类的Class对象,即可获取泛型参数的Class对象。例如:
```java
public class Test<T> {
public Class<T> getType() {
return getGenericType(getClass());
}
}
public class Example extends Test<String> {
// ...
}
// 获取Example类中泛型参数的Class对象
Class<String> type = new Example().getType();
```
阅读全文