when variable then scripts example reflection groovy private-members

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