Apache Commons BeanUtils获取列表属性

时间:2011-04-10 17:44:14

标签: java generics apache-commons-beanutils

在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

感谢。

1 个答案:

答案 0 :(得分:4)

我不知道beanutils是否可行。但你可以用反思来做到这一点。

Field field = Track.class.getDeclaredField("actorList");
ParameterizedType pt = (ParameterizedType) field.getGenericType();
Class clazz = (Class) pt.getActualTypeArguments()[0];

您可能需要进行一些检查(无论您是否可以投射,是否存在实际的类型参数等),但您明白了。

类型信息在运行时被删除,除非它是结构性的 - 例如字段或类的类型参数。