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

被折叠的 条评论
为什么被折叠?



