- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用此代码来查找给定类中的所有 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 。它将使您能够访问 Field
和 Method
的完全解析的类型信息,但从那时起您将需要找出逻辑 Bean 属性。如果您愿意,可以将两者结合起来,以便您可以使用 Bean Introspection 来查找 Method
,然后将其与 java-classmate
可以提供的解析信息进行匹配.
关于Javabean Introspector - 我的列表中有什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30947603/
我使用此代码来查找给定类中的所有 Java 列表: BeanInfo beanInfo = Introspector.getBeanInfo(classx); PropertyDescriptor[]
我正在研究使用 Jigsaw 来减少微服务的占用空间。我必须找到的最后一个依赖项是 java.beans.Introspector。 想象一下当我发现我需要引入整个模块 java.desktop 时我
Java 内省(Introspector)深入理解 一些概念: 内省(Introspector) 是Java 语言对 JavaBean 类属性、事件的一种缺省处理方法。 JavaBea
我阅读了 JavaBeans 规范,但没有发现这种行为。这是一个错误吗? testPropertyType 失败,因为需要 Data 类 testPropertyReadable 成功,因为存在 De
给定以下代码框架,是否可以确定属性 foo 实际上是 String 类型? public class TestIntrospection { public static class Super
我用Java Introspector写了一个方法,但是我发现当setter/getter方法是static时,它不起作用! public class Bean { public static
我做了一个 super 简单的例子,没有任何意义。 public static void main(String [] args) throws IntrospectionException {
我正在使用内省(introspection)来检索 beans get 方法,并且我希望能够确定结果是数组还是基元,但我总是得到错误响应。即使我知道该类型是 ArrayList。同样,isArray(
我刚刚注意到 java.beans.Introspector getBeanInfo 没有获取任何超接口(interface)的属性。示例: public interface Person {
我正在使用第 3 方库动态创建 Java 类的实例并在 Introspector.getBeanInfo 的帮助下填充这些实例。某些请求可能会导致对 Introspector.getBeanInfo
我有一个由两个值组成的字段。这是序列化为 JSON 或从 JSON 序列化的字段,效果很好。 public String getRevisions() { return revisions; } pu
我正在尝试运行基于 LibGDX 的 Android 应用程序,该应用程序是使用 Spring 框架(不是 Android 的 Spring,而是普通的 Spring)构建的。有一个异常(except
我正在为我的 Android 应用程序使用 OpenCsv 解析 .csv 文件。我在 kotlin 中编写代码。这是我的代码: 这是我解析 csv 文件的方式: val beans: List =
我对 Interface 和 BeanInfo Introspector 中的默认方法有一个小问题。在这个例子中,有接口(interface):Interface public static inte
我对 Interface 和 BeanInfo Introspector 中的默认方法有一个小问题。本例中有接口(interface):Interface public static interfac
我有使用 java.beans.Introspector、java.beans.BeanInfo 的第 3 方 jar(我无法更改)和 java.beans.PropertyDescriptor. 如
我在带有 DCEVM(完整实现)的 JVM 1.7 和带有自定义插件的 HotSwapAgent 上运行 WebLogic,该插件在每个 onClassLoad 上触发。 我遇到了使用 java.be
我正在尝试使用 Proguard 来混淆我的 Android 应用程序。此外,我正在使用 IntelliJ Idea 11.1.3 构建发布签名的 APK,并在“打开模块设置”->“方面”->“编译器
我是一名优秀的程序员,十分优秀!