【发布时间】:2015-04-08 10:55:22
【问题描述】:
我有一个局部变量 List 或其他一些 List 我想得到这个列表变量的泛型类。
变量不是成员变量,所以不要使用Field获取泛型类。
方法应该是
public Class<?> getGenericClass(List<E> list){
//somehow to return Class E
}
编辑:我尝试了@Radiodef 的解决方案,但出现异常
java.lang.ClassCastException: sun.reflect.generics.reflectiveObjects.TypeVariableImpl 无法转换为 java.lang.Class
在线Class genericClazz = (Class) pt .getActualTypeArguments()[0]。
public static void main(final String[] args) throws IOException {
final List<String> list = new ArrayList<String>();
list.add("aaa");
final Type type = list.getClass().getGenericSuperclass();
if (type instanceof ParameterizedType) {
final ParameterizedType pt = (ParameterizedType) type;
final Class<?> genericClazz = (Class<?>) pt
.getActualTypeArguments()[0];
System.out.println(genericClazz.getName());
}
}
【问题讨论】:
-
你试过了吗?
标签: java list generics reflection field