新的声明方式,用def定义新属性

本文探讨了Groovy语言中属性定义的变化,包括早期使用@Property注解定义带getter和setter的方法,以及后续版本中如何采用def关键字替代@Property实现相同功能。随着语言的发展,@Property已被废弃,而def成为了推荐的选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

def 和 @Property

旧版本中(Groovy JSR 06 的之前版本)@Property定义一个带有setter和getter的私有属性,而def和java中public一样,定义一个公共的属性。

后来@Property已经从Groovy JSR 06中移除,在Grails 0.2和之后的版本中也不会再需要它 。

现在def用来定义一个带有setter和getter的私有属性,来代替了@Property。



参考:http://docs.codehaus.org/display/GroovyJSR/Property+proposal

symbol  meaning
 private
 protected
 public
 final


code field   getter   setter
def x   
final x   
public x   
protected x   
private x   
public final x   
@Property x    
other permutations?    

Proposed

code field   getter   setter note
def x      
final x    the field doesn't need to be final IMHO (dk) My view is that the field should be final(tug)
public x    
protected x    
private x    
public final x
 a public final field like in Java
@Property x      if it's still supported (MrG) My proposal is to remove it (tug)
other permutations?     what happens with static? (MrG) Static behave exactly the same(tug)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值