首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在grails中是否使用getter和getter?

在grails中是否使用getter和getter?
EN

Stack Overflow用户
提问于 2012-11-25 09:50:26
回答 2查看 6.1K关注 0票数 7

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

例如,域类Book具有以下属性:

代码语言:javascript
复制
String author

在控制器中,您有一本书,并且您想要为这本书设置作者:这适用于直接访问属性,或者使用getter和setter方法,尽管它们不在类中。

代码语言:javascript
复制
book.author = "Mike Miller"
book.setAuthor("Mike Miller")

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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,例如

代码语言:javascript
复制
void setAuthor(String a) {
   println "Setting author to '$a', was '$author'" 
   author = a
}

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

票数 15
EN

Stack Overflow用户

发布于 2012-11-26 14:12:14

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

book.author = "Mike Miller"

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13547563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档