如果您在grails项目中有一个域类,您还可以使用getter和setter来写入或读取它们。
例如,域类Book具有以下属性:
String author在控制器中,您有一本书,并且您想要为这本书设置作者:这适用于直接访问属性,或者使用getter和setter方法,尽管它们不在类中。
book.author = "Mike Miller"
book.setAuthor("Mike Miller")在groovy和grails中获取和设置属性的首选方法是什么?
发布于 2012-11-25 10:28:11
它们是一样的。当您拥有像String author这样的未限定作用域的字段时,Groovy编译器将该字段设为私有,并为其创建一个getter和setter。但是它不会覆盖现有的方法,所以如果不仅仅是设置和获取值,那么您可以定义自己的set和/或get。
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
发布于 2012-11-26 14:12:14
这两者之间没有实际的区别,因为它们都编译成相同的代码。使用grails的好处之一是不必担心getter和setter样板代码,所以我强烈建议使用下面的代码,因为它提高了可读性和生产力:
book.author = "Mike Miller"
https://stackoverflow.com/questions/13547563
复制相似问题