descriptor: java.beans.PropertyDescriptor@1e746992
descriptor.getName(): class
descriptor.getReadMethod(): public final native java.lang.Class java.lang.Object.getClass()
descriptor: java.beans.PropertyDescriptor@c994fbad
descriptor.getName(): published
descriptor.getReadMethod(): null
如果我把FooBean.java改成这样:
package example;
public class FooBean {
private boolean published;
public void setPublished(boolean published) {
this.published = published;
}
public boolean isPublished() {
return published;
}
}
然后得到的结果是:
descriptor: java.beans.PropertyDescriptor@18072768
descriptor.getName(): class
descriptor.getReadMethod(): public final native java.lang.Class java.lang.Object.getClass()
descriptor: java.beans.PropertyDescriptor@1e2ff4ad
descriptor.getName(): published
descriptor.getReadMethod(): public boolean example.FooBean.isPublished()
package example;
public class FooBean {
private Boolean published;
public void setPublished(Boolean published) {
this.published = published;
}
public boolean isPublished() {
return published;
}
}
结果:
descriptor: java.beans.PropertyDescriptor@1e746992
descriptor.getName(): class
descriptor.getReadMethod(): public final native java.lang.Class java.lang.Object.getClass()
descriptor: java.beans.PropertyDescriptor@f96377e5
descriptor.getName(): published
descriptor.getReadMethod(): public boolean example.FooBean.isPublished()
# 1 楼答案
在严格的JavaBeans中,这是一个有效的名称(请参阅@TheeleteGentlest的答案)
但是,请确保您没有这样做:
不建议这样做,因为字段名称与方法名称不匹配。一些框架允许向Java Bean的内部字段和getter/setter添加注释;这种不匹配可能会混淆这些框架。还请注意,将类名添加到字段中是不好的做法;你的方法应该是
isFlat()
当然,这是完全正确的:
但话说回来,你真的在做独轮车的模特吗?;-)
# 2 楼答案
我不得不不同意。我问了同样的问题,写了一个快速测试
假设JavaBean是:
还有一个看起来像:
运行主类的结果是:
如果我把
FooBean.java
改成这样:然后得到的结果是:
这告诉我,要使其成为有效的JavaBeans签名,必须将该类型声明为原始布尔值
编辑 经过进一步测试,似乎只有isXxx()方法声明的返回类型必须是布尔类型,JavaBeans才能识别它:
结果:
# 3 楼答案
在JavaBeans中,
boolean
的getter方法可以是getXXX()
或isXXX()
。由于Boolean
不是基元类型,因此需要getXXX()
。isXXX()
仅适用于布尔基元类型(感谢@Kemoda)请参阅section 8.3.2 of the JavaBeans Specification