是一个以“前缀”为前缀的布尔属性名称;是";仍然是有效的javabean吗?
我只是注意到一些我不知道的事情是一个以“前缀”为前缀的布尔属性名称;是";仍然是有效的javabean吗?,java,javabeans,lombok,Java,Javabeans,Lombok,我只是注意到一些我不知道的事情 private boolean isCertified; public boolean isCertified() { return isCertified; } public void setCertified(boolean certified) { isCertified = certified; } Intellij生成了以下getter和setter。顺便说一下,Lombok生成了相同类型的getter和sett
private boolean isCertified;
public boolean isCertified() {
return isCertified;
}
public void setCertified(boolean certified) {
isCertified = certified;
}
Intellij生成了以下getter和setter。顺便说一下,Lombok生成了相同类型的getter和setter
我本以为会发生这样的事情:
private boolean isCertified;
public boolean isIsCertified() {
return isCertified;
}
public void setIsCertified(boolean certified) {
isCertified = certified;
}
private boolean certified;
public boolean isCertified() {
return certified;
}
public void setCertified(boolean certified) {
certified = certified;
}
这就是为什么我通常不在布尔属性前面加上ìs
,尽管我认为属性名变得更可读
我通常会写这样的东西:
private boolean isCertified;
public boolean isIsCertified() {
return isCertified;
}
public void setIsCertified(boolean certified) {
isCertified = certified;
}
private boolean certified;
public boolean isCertified() {
return certified;
}
public void setCertified(boolean certified) {
certified = certified;
}
所以我想知道:
- 具有名为
的属性,并且getter是isXXX
而不是isXXX
:它是有效的Java Bean定义吗?isIsXXX
- 是否还有其他类似的隐藏JavaBean角落案例,我可能想知道,以提高代码的可读性?
谢谢你的私人字段叫什么其实并不重要;这就是为什么你的二传手和接球手在那里
private boolean certified;
public boolean isCertified() {
return certified;
}
public void setCertified(boolean certified) {
this.certified = certified;
}
没关系。
关于变量名称的更多信息,您可以查看。AFAIK,字段的命名模式不是JavaBeans规范的一部分 JavaBeans规范(除其他外)指定了“属性”概念 类的属性由类的方法(以特定模式命名)标识 字段是不相关的。事实上,属性甚至不必有字段 也就是说,在属性名称之后命名字段仍然是一种好的做法。需要访问字段的工具(例如IDE中的重构支持)正确处理字段的可能性更大 有一个名为isXXX的属性和一个名为isXXX而不是isIsXXX的getter:这是一个有效的JavaBean定义吗 否,属性
isXXX
的getter需要isIsXXX()
(对于布尔值)或getIsXXX()
但情况又是相反的
如果您有一个方法:
boolean isXyz()
这样就有了一个可读的属性xyz
如果你有办法
boolean isIsXyz()
然后您就有了一个可读的属性isXyz
有关更多信息,请查看类、或JavaBeans规范:
因为Java bean的属性通常只是由它们的getter和setter方法定义的(而实际的,很可能是私有的,成员变量被忽略了),是的,这很好。尽管我仍然将布尔成员称为certified,但这是风格/品味的问题。当您从IDE(许多情况下是Eclipse)为布尔变量生成setter/getter时,这是创建setter和getter的标准方式。它是一个完美有效的JavaBean定义。事实上,当您使用像JSF这样的框架时,使用setter/getter传递值,定义布尔变量并使用生成的setter/getter就成了一种强制要求