¿Buscas nuestro logo?
Aquí te dejamos una copia, pero si necesitas más opciones o quieres conocer más, visita nuestra área de marca.
Conoce nuestra marca.¿Buscas nuestro logo?
Aquí te dejamos una copia, pero si necesitas más opciones o quieres conocer más, visita nuestra área de marca.
Conoce nuestra marca.dev
A. Vilches 09/11/2010 Cargando comentarios…
Una de las principales ventajas de Groovy es el uso implícito de getters/setters para el acceso y escritura de variables; y la generación durante la compilación, de getters/setters para todos los atributos de nuestras clases.
Con un par de ejemplos se ve más claro: si tenemos una clase con dos atributos:
class Persona {
String nombre
int edad
}
El compilador de Groovy va a generar automáticamente los setters y los getters correspondientes, quedando la clase como si hubiera sido codificada así en Java:
public class Persona {
private String nombre;
private int edad;
public String getNombre() { return nombre; }
public setNombre(String nombre) { this.nombre = nombre; }
public int getEdad() { return edad; }
public setEdad(int edad) { this.edad = edad; }
}
Por otro lado, cuando accedemos a una variable desde Groovy, estamos usando implícitamente los getters y setters, de manera que el siguiente código Groovy:
def valor = miedad
persona.nombre = valor
Sería el equivalente a esto:
def valor = getMiedad()
getPersona().setNombre(valor)
Es decir, cualquier acceso a una variable que no exista en el contexto actual, o cualquier acceso a un atributo de un objeto, se transforma en un get/set (para saltarse esto, es necesario utilizar el operador "Java field" de la siguiente manera: persona.@nombre = valor)
Estos dos características nos permiten añadir, por ejemplo, nuevas variables en nuestros controladores cuyos valores se carguen de base de datos o de la sesión (o de los dos sitios). Por ejemplo, supongamos que tenemos un controlador que requiere en cada petición la lectura de base de datos del usuario y de una factura:
class EjemploController {
def index = {
def usuario = Usuario.get(session.miusuario) // Se supone que durante el login, se carga el valor miusuario en la sesion
usuario.accesos = usuario.accesos + 1
usuario.save()
def factura = Factura.findByUsuarioAndFecha(usuario, new Date())
sendEmailAviso(factura.importe, usuario.email)
...
}
}
Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.
Cuéntanos qué te parece.