IntelliJ为布尔字段生成以下getter / setter代码:
private boolean isTest;
public boolean isTest() {
return isTest;
}
public void setTest(boolean test) {
isTest = test;
}
这也产生相同的方法签名:
private boolean test;
public boolean isTest() {
return test;
}
public void setTest(boolean test) {
this.test = test;
}
大!到现在为止还挺好。 IntelliJ遵循boolean的JavaBean命名约定。
但请注意使用对象布尔值(而不是基本布尔值)时会发生什么:
private Boolean isTest;
public Boolean getTest() {
return isTest;
}
public void setTest(Boolean test) {
isTest = test;
}
哦,哦!你看到了吗?应该生成它(Eclipse会这样做):
private Boolean isTest;
public Boolean getIsTest() {
return isTest;
}
public void setIsTest(Boolean isTest) {
isTest = isTest;
}
这似乎没什么大不了的,但这种小小的不一致导致了一个巨大的项目噩梦。原因是:还有其他层和框架希望将变量 EXACTLY 映射到Java类字段名称 - 否则它会在没有自定义映射逻辑的情况下失败(痛苦且不必要)。
我们的团队对所有布尔对象使用is * Name *模式。甚至我们的布尔数据库列都命名为is_ name ,它使用JBoss Hibernate Eclipse逆向工程工具插件转换为“is * Name *”。
有谁知道如何解决这个问题?我们可以配置某种类型的代码生成模板吗?非常感谢任何帮助。
答案 0 :(得分:1)
在get<Property>
IDEA生成is<Property>
时,Eclipse生成boolean
以获取布尔值was reported。这违反了规范和用户要求修复它。
由于解决了这个错误,当前的IDEA版本正在按照JavaBeans规范工作,并且仅对原始get<Property>
类型使用此类getter,对包括Boolean
在内的其他类型使用{{1}}。
很抱歉,但无法在IDEA中配置此行为。