Secciones

Almacenando y sobreescribiendo métodos en Groovy con metaprogramación

Inicio » Artículos » Almacenando y sobreescribiendo métodos en Groovy con metaprogramación
La categoría del artículo es
Escrito el 2 July 2014, 03:04


Si en alguna ocasión necesitas almacenar el contenido de algún parámetro pasado a alguna función en Groovy, necesitarás almacenar el método antes de modificarlo mediante programación.


Si en alguna ocasión necesitas almacenar el contenido de algún parámetro pasado a alguna función en Groovy, necesitarás almacenar el método antes de modificarlo mediante programación.

Imagina que tenemos una función que realiza la suma de dos enteros:

Groovy:
def suma(int x, int y) {
        x + y
}

y que por algún motivo, que te lo dejo a tu imaginación, necesites sabes que parámetro le estas pasando en segunda posición. La clave de todo está en utilizar el método getMetaMethod())

Groovy:
def segundoParametro
def antiguaSuma = MiClase.metaClass.getMetaMethod("suma", [0,0] as Object[])

MiClase.metaClass.suma = { x, y ->
        segundoParametro = y
        antiguaSuma.invoke(delegate, [x,y] as Object[])
}


Espero tus comentarios...

Ayuda Textile