是否使用grails中的getter和setter?

时间:2012-11-25 01:50:26

标签: grails groovy setter getter

如果你在grails项目中有一个域类,你也可以使用getter和setter来编写或读取它们。

例如,域类Book具有属性:

String author

在控制器中你有一本书,你想为这本书设置作者: 这可以直接访问属性,也可以使用getter和setter方法,尽管它们不在类中。

book.author = "Mike Miller"
book.setAuthor("Mike Miller")

在groovy&中获取和设置属性的首选方法是什么?的grails?

2 个答案:

答案 0 :(得分:15)

他们是一样的。当你有一个像String author这样的无范围字段时,Groovy编译器会将该字段设为私有,并为其创建一个getter和setter。它不会覆盖现有方法,因此您可以定义自己的集合和/或获取它是否不仅仅是设置和获取值。

book.author = "Mike Miller"是用于调用setter的Groovy语法糖,就像String authorName = book.author是用于调用getter的语法糖一样。要查看此内容,请编辑该类并添加setter或getter并添加println,例如

void setAuthor(String a) {
   println "Setting author to '$a', was '$author'" 
   author = a
}

您可以使用反编译器查看生成的代码 - 我推荐JD-GUI,http://java.decompiler.free.fr/?q=jdgui

答案 1 :(得分:3)

两者之间没有实际区别,因为它们都编译成相同的代码。 使用grails的一个好处是不必担心getter和setter样板代码,所以我强烈建议使用下面的代码,因为它提高了可读性和生产力:

book.author = "Mike Miller"