gpt4 book ai didi

Javabean Introspector - 我的列表中有什么?

转载 作者:行者123 更新时间:2023-12-01 11:24:33 25 4
gpt4 key购买 nike

我使用此代码来查找给定类中的所有 Java 列表:

BeanInfo beanInfo = Introspector.getBeanInfo(classx);
PropertyDescriptor[] propertyDescriptors = beanInfo .getPropertyDescriptors();

for (PropertyDescriptor pd : propertyDescriptors) {
Class<?> ptype = pd.getPropertyType();

if ((ptype+"").contains("java.util.List")) {
System.out.println("list class property: " + pd.getName() + ", type=" + ptype);
}
}

这是输出:

class property: value, type=interface java.util.List

问题是如何找出List中是什么类型?对于此示例,该列表在 classx 中定义为:

@JsonProperty("value")
private List<Value> value = new ArrayList<Value>();

我如何知道该列表是 Value 对象的列表?谢谢。

最佳答案

由于类型删除,您无法通过属性自省(introspection)获得该信息。任何 Class 类型的东西都没有泛型类型参数信息(至少是直接的;父类(super class)型关系有)。要获得泛型类型声明,您需要能够访问 java.lang.reflect.Type (其中 Class 是一种实现;但具有泛型参数的实现是 >通用类型)。

有些库允许您完全解析泛型类型,例如 java-classmate 。它将使您能够访问 FieldMethod 的完全解析的类型信息,但从那时起您将需要找出逻辑 Bean 属性。如果您愿意,可以将两者结合起来,以便您可以使用 Bean Introspection 来查找 Method,然后将其与 java-classmate 可以提供的解析信息进行匹配.

关于Javabean Introspector - 我的列表中有什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30947603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com