Secciones

Artículos para tus primeros pasos

Si estás empezando a introducirte en el mundo de Groovy y Grails, no te pierdas nuestros artículos básicos: 

Entrevistas con los expertos
 

Los protagonistas te cuentan de qué van los proyectos más importantes del mundo Groovy:


Un proyecto de:
ImaginaWorks
Campus Escuela de Groovy

Las nuevas funcionalidades de Groovy

lunes 24/09/2007

Graeme Rocher, autor de ExpandoMetaClass, nos habla en su blog sobre las nuevas funcionalidades de meta-programación introducidas en la Beta3.

Reflection++

En Groovy, todas las clases llevan asociada una "metaclase" que implementa el MOP (Meta Object Protocol), y es la que nos permite añadir funcionalidades en tiempo de ejecución a un objeto cualquiera, o interceptar las llamadas a métodos para insertar comportamiento.

Los nuevos métodos respondsTo y hasProperty  nos permiten inspeccionar un objeto para saber si dispone de un método o propiedad particular, por ejemplo:

if (Clase.metaclass.respondsTo("metodo")) {

    obj.metodo() 

}

O también,

if (Clase.metaclass.hasProperty("nombre")){

    println obj.nombre

Interceptar llamadas a artefactos que no existen

Los métodos methodMissing y propertyMissing nos permiten interceptar las llamadas fallidas a métodos y propiedades, respectivamente. Se trata de un mecanismo más eficiente que el que había en Groovy hasta ahora, que sólo permitía interceptar todas las llamadas (sin distinción).

Con este mecanismo podemos añadir métodos a cualquier clase de forma sencilla:

Clase.metaClass.methodMissing = { String nombre, args ->
Clase.metaClass."$name" = { Object[] varArgs ->
"$name : ${varArgs.inspect()}"
}
delegate."$name"(args)
}
En este ejemplo capturamos la llamada a un método inexistente, lo creamos al vuelo, y lo invocamos. Este proceso sólo se ejecutará la primera vez que se produzca la llamada: las siguientes se harán directemente sobre el método que hemos añadido.


Contenidos relacionados:



0 comentarios:

Tienes que estar registrado para iniciar sesión y poder publicar tus comentarios