我刚刚注意到我不知道的东西.
private boolean isCertified; public boolean isCertified() { return isCertified; } public void setCertified(boolean certified) { isCertified = certified; }
Intellij生成了以下getter和setter.顺便说一句,龙目岛生产同样的吸气器和设置器.
我会预料到:
private boolean isCertified; public boolean isIsCertified() { return isCertified; } public void setIsCertified(boolean certified) { isCertified = certified; }
这就是为什么我通常不用我的布尔属性前缀ìs,鄙视我认为属性名变得更加可读的事实.
我通常写的东西就像:
private boolean certified; public boolean isCertified() { return certified; } public void setCertified(boolean certified) { certified = certified; }
所以我想知道:
有一个名为isXXX的属性和一个getter是isXXX而不是isIsXXX:它是一个有效的Java Bean定义吗?
>有没有任何其他隐藏的Java Bean角色的情况,我可能想知道提高代码的可读性?
谢谢
解决方法
AFAIK,字段的命名模式不是JavaBeans规范的一部分.
JavaBeans规范(以及其他)指定了“属性”概念.
这些领域是无关紧要的.事实上,甚至没有一个财产的领域.
也就是说,在属性名称后面命名字段仍然是一个很好的做法.更多的是,需要访问字段的工具(例如IDE中的重构支持)将正确处理这些字段.
Having a property named isXXX and a getter being isXXX instead of isIsXXX: is it a valid Java Bean definition?
不,属性的getter是XXX要求isIsXXX()(对于布尔值)或getIsXXX().
但是又是另一回事.
如果你有一个方法:
boolean isXyz()
那么你有一个可读属性xyz.
如果你有一个方法
boolean isIsXyz()
那么你有一个可读的属性isXyz.
有关更多信息,请查看Introspector类,tutorial或JavaBeans规范:
http://www.oracle.com/technetwork/java/javase/documentation/spec-136004.html
http://www.oracle.com/technetwork/java/javase/tech/index-jsp-138795.html