gpt4 book ai didi

java - 如何内省(introspection) getter 和 setter 具有不同类型的字段?

转载 作者:行者123 更新时间:2023-11-30 02:29:19 27 4
gpt4 key购买 nike

我有 JAXB 生成的 Java Beans 类,我不想手动更改它:

public class Bar
{
protected Boolean foo;

public Boolean getFoo() {
return this.foo;
}

public void setFoo(final boolean value) {
this.foo = value;
}
}

我正在尝试以这种方式研究这个类(我需要 getter 和 setter):

  PropertyDescriptor[] propertyDescriptiors =
Introspector.getBeanInfo(Bar.class, Object.class).getPropertyDescriptors();
for (PropertyDescriptor descriptor : propertyDescriptiors)
{
System.out.println("read method: " + descriptor.getReadMethod());
System.out.println("write method: " + descriptor.getWriteMethod());
}

但它找不到 setter 。

如果我更改 getFoo 以返回原始 booleansetFoo 来接收 Boolean 对象,则效果很好。

如何才能从此类获取 getter 和 setter 方法而不更改其类型?

最佳答案

你不能,检查器找不到 setter ,因为 foo 类型是 Boolean,而不是 boolean

你可以使用包装器

public class BarWrapper {
private Bar bar;

public Boolean getFoo() {
return this.bar.getFoo();
}

public void setFoo(final Boolean value) {
this.bar.setFoo(value);
}
}

然后检查包装器

Introspector.getBeanInfo(BarWrapper.class, Object.class).getPropertyDescriptors();

关于java - 如何内省(introspection) getter 和 setter 具有不同类型的字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44657280/

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