Java获取通用类型的集合
发布时间:2020-12-14 05:11:30 所属栏目:Java 来源:网络整理
导读:这个问题在这里已经有一个答案: Get generic type of java.util.List12 我的项目包括反射,我正在处理通用类型. 我设法从List(java.util.List)获取通用类型: if(originalField.getGenericType() instanceof ParameterizedType){ ParameterizedType pt = (Pa
这个问题在这里已经有一个答案:>
Get generic type of java.util.List12
我的项目包括反射,我正在处理通用类型. 我设法从List(java.util.List)获取通用类型: if(originalField.getGenericType() instanceof ParameterizedType){ ParameterizedType pt = (ParameterizedType) originalField.getGenericType(); Class<?> subClass = (Class<?>) pt.getActualTypeArguments()[0]; } 我也有一个集合< String>事实证明,Collection不能被转换为ParameterizedType. 有人有一个想法如何获取字符串(或任何类型将是)从集合? 我一直在阅读关于java擦除的内容,所以我知道这一点,但是在将通用程序从列表中取出后,我认为也许有人知道另一个“伎俩”. 谢谢. 编辑: for (Field originalField : someClass.getDeclaredFields()) 然后当我面对一些List< String> Field,用上面的代码我得到了String作为subClass变量. 解决方法
你的方法很好它应该适用于List< String>和Collection< String> ;.例如,见这个示例代码:
public class Demo { List<String> list = new ArrayList<>(); Collection<String> coll = new ArrayList<>(); public static void main(String args[]){ Class<Demo> clazz = Demo.class; Field[] fields = clazz.getDeclaredFields(); for (Field field: fields) { Type type = field.getGenericType(); if (type instanceof ParameterizedType) { ParameterizedType pType = (ParameterizedType)type; Type[] arr = pType.getActualTypeArguments(); for (Type tp: arr) { Class<?> clzz = (Class<?>)tp; System.out.println(clzz.getName()); } } } } } 这打印出来: java.lang.String java.lang.String (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |