gpt4 book ai didi

java Introspector 没有找到静态属性或实际上是静态 getter/setter 方法?

转载 作者:行者123 更新时间:2023-11-30 08:34:08 24 4
gpt4 key购买 nike

我用Java Introspector写了一个方法,但是我发现当setter/getter方法是static时,它不起作用!

public class Bean {

public static String foo;

public String bar;

public static String fooBar;

public static String getFoo() {
return foo;
}

public static void setFoo(String foo) {
Bean.foo = foo;
}

public String getBar() {
return bar;
}

public void setBar(String bar) {
this.bar = bar;
}

public String getFooBar() {
return fooBar;
}

public void setFooBar(String fooBar) {
Bean.fooBar = fooBar;
}
}

    public static void main(String[] args) throws Exception {

BeanInfo beanInfo = Introspector.getBeanInfo(Bean.class);
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for(PropertyDescriptor propertyDescriptor : propertyDescriptors){
System.out.println(propertyDescriptor.getName());
}

}

上面的代码运行返回如下:

bar
class
fooBar

它只返回 bar 和 foorBar

这是否意味着 Introspector 没有找到静态属性或实际上没有找到 getter/setter 方法?

最佳答案

打印出 propertyDescriptor 对象而不是它的名称,您可以看到它查看 bean 类上的方法。

Javadoc 说:如果我们没有在某个类上找到明确的 BeanInfo,我们将使用低级反射来研究该类的方法并应用标准设计模式来识别属性访问器、事件源或公共(public)方法

所以大概“标准设计模式”意味着非静态访问器。也就是说,它寻找 public void setXXX(T)public T getXXX() 方法。

关于java Introspector 没有找到静态属性或实际上是静态 getter/setter 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39035314/

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