La clase Expando de Groovy

¿Te imaginas una clase de Groovy a la que le puedes añadir, en tiempo de ejecución, propiedades y métodos? Pues eso es lo que te ofrece su clase Expando, cuyo uso es muy similar al modo en el que, en JavaScript, se usan objetos instanciando la variable Object.

// Define la classe Expando con dos propiedades:
def blog = new Expando(titulo : "metroSetenta", subtitulo : "Arquitectura y diseño de software")
// Añade una nueva propiedad a Expando:
blog.url="metroSetenta.com"
// Incluye un método con un cierre:
blog.toString={
  return """
    Título del blog:    ${titulo}
    Subtítulo del blog: ${subtitulo}
    URL del blog:       ${url}
  """
}
println (blog)

Observa en el pequeño ejemplo de arriba que el constructor usa una notación similar a los mapas Groovy y, que los métodos, son implementados usando cierres (closures). Puedes probar este pequeño ejemplo guardándolo en un archivo para ejecutarlo con el comando groovy.

$ groovy expandoText.groovy

  Título del blog:    metroSetenta
  Subtítulo del blog: Arquitectura y diseño de software
  URL del blog:       metroSetenta.com

Este pequeño artículo se lo quiero dedicar con cariño a mi compañero Fran, que fue quien me mostró la clase Expando de Groovy.