java - Apache Commons BeanUtils 获取列表属性

标签 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

谢谢。

最佳答案

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

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

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

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

关于java - Apache Commons BeanUtils 获取列表属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5613574/

相关文章:

kotlin - Kotlin 中具体化的内联函数在 'is' 检查时仍然导致编译器错误

Java:优化代码

java - Android 自定义 ListView 不使用 Volley 构建

java - 在 4.4 设备上运行的应用程序的主题问题

java - Java 中的泛型函数

java - 使用 BeanUtils.copyProperties(dest, src) 时出错

java - ByteBuffer 到 int 数组(每个字节)

c# - 为什么 C# 编译器在从不同的基类派生时会报错 "types may unify"?

java - Bean 属性访问和注解

Java Bean Utils 调用所有非 String 类型的 setter