【问题标题】:Apache Commons BeanUtils get list propertiesApache Commons BeanUtils 获取列表属性
【发布时间】:2011-04-10 17:44:13
【问题描述】:

在 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

谢谢。

【问题讨论】:

  • 所有泛型类型都受到类型擦除的影响,因此在运行时 Java 无法知道这是一个演员列表。我不知道 bean utils,但要让它工作,这必须在编译时解决。

标签: java generics apache-commons-beanutils


【解决方案1】:

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

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

您可能需要在上面进行一些检查(是否可以强制转换,实际类型参数是否存在等),但您明白了。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-14
    • 2017-06-14
    • 2018-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多