我刚注意到一些我不知道的事情。
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角落案例,我可能想了解这些案例以提高代码可读性?
由于
答案 0 :(得分:10)
AFAIK,字段的命名模式不是JavaBeans规范的一部分。
JavaBeans规范指定(以及其他)"属性"概念
类的属性由类的方法(以特定模式命名)标识。
这些字段无关紧要。事实上,甚至不需要成为房产的一个领域。
尽管如此,在属性名称后命名字段仍然是一个好习惯。需要访问字段的工具(例如IDE中的重构支持)将正确处理字段的可能性更大。
拥有一个名为isXXX的属性,而getter是isXXX而不是isIsXXX:它是一个有效的Java Bean定义吗?
不,属性isXXX
的getter需要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
答案 1 :(得分:4)
private boolean certified;
public boolean isCertified() {
return certified;
}
public void setCertified(boolean certified) {
this.certified = certified;
}
没关系。 有关您可以在oracle.docs
上查看的变量名称的更多信息答案 2 :(得分:1)
私人领域的名称并不重要;这就是你的主持人和吸气者在那里的原因。
答案 3 :(得分:1)
由于Java Bean的属性通常只是由它们的getter和setter方法定义(为此目的,实际的,很可能是私有的成员变量被忽略),是的,这是完全正常的。虽然我仍然只调用布尔成员certified
,但这是风格/品味的问题。
答案 4 :(得分:0)
当您从IDE(许多情况下是Eclipse)生成布尔变量的setter / getters时,这是创建setter和getter的标准方法。它是一个完美有效的Java bean定义。事实上,当您使用JSF这样的框架(其中使用setter / getters传递值)时,定义布尔变量并使用生成的setter / getter变为必需的。