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) |