java - 在 Java 中使用 Reflection 递归查找 PropertyDescriptor

标签 java reflection introspection

有没有办法使用 Java 反射递归地查找属性描述符?

想象一个场景,其中 User 类有一个名为 profile 的字段,它本身是另一个具有 email 属性的类。

通过拥有用户对象,我需要访问 profile.email,因此所需的方法签名应该与此类似:

public PropertyDescriptor findPropertyDescriptor(Class<?> clazz, String path)
{
    // Code!
}

调用类似于:

findPropertyDescriptor(User.class, "profile.email")

我还认为像下面这样的调用也应该是可能的:

findPropertyDescriptor(User.class, "addresses[2].postCode")

最佳答案

由于没有人提出解决方案,所以我必须在这里回答我的问题。

感谢 Spring,这已经实现了:

public static <T> PropertyDescriptor getPropertyDescriptor(T rootObject, String path)
{
    BeanWrapperImpl wrapper = new BeanWrapperImpl(rootObject);
    return wrapper.getPropertyDescriptor(path);
}

除了问题中提到的要求外,它还支持 map 。

关于java - 在 Java 中使用 Reflection 递归查找 PropertyDescriptor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12940979/

相关文章:

Java 在二维数组中查找最小值

C# 检查一个对象是否可以转换为另一个对象失败?

python - 如何测试一个对象是一个函数还是一个未绑定(bind)的方法?

python - 获取python中类的类路径或 namespace ,即使它是嵌套的

java - 如何运行打包在spring boot jar中的主类

java - 保存了超过 10 个项目的 ArrayList 未排序到数据库

java - 如何在java中使用ArrayList查找素数

java - 如何检查一个对象是否是某种类型的数组

java - 从 Class<? 中获取枚举实例使用字符串值扩展枚举>?

python - Pytest - 功能级别的 fixture 自省(introspection)