Groovy @字段前的符号 [英] Groovy @ symbol before fields
问题描述
public class Person {
private String name
}
def u = new Person(name:Ron)
println u。@ name // Ron
println u.name // Ron
a = {2}>> {3}
println a。@ first //第一个闭包对象
println a.first //运行时错误
它允许您覆盖groovy对属性访问器的使用。如果你写:
println u.name
groovy会调用自动生成的getter Person.getName()。如果你写:
println u。@ name
它将直接进入该领域,就像在Java中一样。在关闭的情况下,它似乎有一个第一个
字段,但不是相应的 getFirst
访问器。
在groovy手册中,它被记录为直接字段访问运营商。
What does @ means before a field name in Groovy? For some classes I am able to access private fields that are not directly accessible, let's take ComposedClosure for example:
public class Person {
private String name
}
def u = new Person(name:"Ron")
println u.@name //Ron
println u.name //Ron
a = {2} >> {3}
println a.@first //first closure object
println a.first //runtime error
It allows you to override groovy's use of property accessors. If you write:
println u.name
groovy will invoke the automatically generated getter Person.getName(). If you write:
println u.@name
it will go directly to the field like it would in Java. In the case of the closure, it seems to have a first
field but not a corresponding getFirst
accessor.
In the groovy manual, it's documented as the direct field access operator.
这篇关于Groovy @字段前的符号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!