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
舊版本中(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) |