在Intellij中为没有返回语句的常规类生成getter

时间:2019-02-25 15:35:42

标签: intellij-idea groovy

我在IntelliJ中有一个常规项目。我有一个类级别的属性,并且尝试使用不带return语句的(Command + N)或(Ctrl + N)生成一个getter方法。

class MyClass {
  final String myProperty

  // generate the below getter from intelliJ
  String getMyProperty() {
    myProperty
  }
}

我也不能从groovy中使用@Immutable注释,因为它不兼容,因为我必须声明一个空的构造函数,因为POGO被用作Hibernate / JPA的实体对象

1 个答案:

答案 0 :(得分:2)

创建POGO类时不需要字母和二传手

  

“在用Groovy(通常称为POGO(普通旧Groovy对象))编写bean时,您不必自己创建字段并使用getter / setter方法,而是让Groovy编译器为您完成。

     

来源:http://groovy-lang.org/style-guide.html#_getters_and_setters

所以

class MyClass {
  String myProperty

  // generate the below getter from intelliJ
  String getMyProperty() {
    myProperty
  }
}

您需要的只是

class MyClass {
  String myProperty
}

在字节码级别上发生的是将字段myProperty编译为等效的private String myProperty,并为您生成了公共getMyPropertysetMyProperty方法。

另一方面,return keyword is optional in Groovy。您的IntelliJ IDEA生成的方法是正确的。在这种情况下,将返回body方法的最后一个表达式。