如何为getter和setter修改IDEA IntelliJ v10.x代码生成器?

时间:2011-09-30 08:22:43

标签: java intellij-idea naming-conventions javabeans getter-setter

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 *”。

有谁知道如何解决这个问题?我们可以配置某种类型的代码生成模板吗?非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

get<Property> IDEA生成is<Property>时,Eclipse生成boolean以获取布尔值was reported。这违反了规范和用户要求修复它。

由于解决了这个错误,当前的IDEA版本正在按照JavaBeans规范工作,并且仅对原始get<Property>类型使用此类getter,对包括Boolean在内的其他类型使用{{1}}。

很抱歉,但无法在IDEA中配置此行为。