reflection - variable - Groovy @ symbol before fields
scripts groovy (2)
Le permite anular el uso de acceso de propiedad de Groovy. Si tú escribes:
println u.name
groovy invocará el getter generado automáticamente Person.getName (). Si tú escribes:
println u.@name
irá directamente al campo como lo haría en Java. En el caso del cierre, parece tener un first
campo pero no un getFirst
correspondiente.
En el manual de Groovy, está documentado como el operador de acceso directo al campo .
¿Qué significa @ antes de un nombre de campo en Groovy? Para algunas clases, puedo acceder a campos privados que no son directamente accesibles, tomemos ComposedClosure por ejemplo:
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
Significa que estás accediendo a un campo directamente, en lugar de atravesar un getter.
Consulte los documentos del operador de Groovy , aunque no hay mucho más que decir. Aparte de probablemente evitarlo.
La razón por la que falla para ComposedClosure
es porque no hay getter para la first
(o second
).