Groovy @ símbolo antes de los campos
¿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
2 answers
Le permite anular el uso de groovy de los accesores de propiedad. Si escribes:
println u.name
Groovy invocará al getter Person generado automáticamente.getName (). Si escribes:
println u.@name
Irá directamente al campo como lo haría en Java. En el caso del cierre, parece tener un campo first
pero no un accessor getFirst
correspondiente.
En el manual de groovy, está documentado como el operador de acceso directo a campo.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-23 21:01:53
Significa que estás accediendo a un campo directamente, en lugar de pasar por un getter.
Ver el operador Groovy docs, aunque no hay mucho más que decir. Aparte de probablemente evitarlo.
La razón por la que falla para un ComposedClosure
es porque no hay un captador para first
(o second
).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-11-30 00:05:16