在 Apache Commons BeanUtil 中,如何在列表中获取类型?例如
class Track {
List<Actor> actorList = new ArrayList<Actor>();
}
System.err.println(PropertyUtils.getPropertyType(trackBean, "actorList"));
// it should give me Actor instead of java.util.List
谢谢。
在 Apache Commons BeanUtil 中,如何在列表中获取类型?例如
class Track {
List<Actor> actorList = new ArrayList<Actor>();
}
System.err.println(PropertyUtils.getPropertyType(trackBean, "actorList"));
// it should give me Actor instead of java.util.List
谢谢。
我不知道 beanutils 是否可行。但是你可以通过反思来做到这一点。
Field field = Track.class.getDeclaredField("actorList");
ParameterizedType pt = (ParameterizedType) field.getGenericType();
Class clazz = (Class) pt.getActualTypeArguments()[0];
您可能需要在上面进行一些检查(是否可以强制转换,实际类型参数是否存在等),但您明白了。
类型信息在运行时被删除,除非它是结构性的——例如字段或类的类型参数。