如果你在grails项目中有一个域类,你也可以使用getter和setter来编写或读取它们。
例如,域类Book具有属性:
String author
在控制器中你有一本书,你想为这本书设置作者: 这可以直接访问属性,也可以使用getter和setter方法,尽管它们不在类中。
book.author = "Mike Miller"
book.setAuthor("Mike Miller")
在groovy&中获取和设置属性的首选方法是什么?的grails?
答案 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"