@Delegate in Groovy

Die sehr mächtigen Möglichkeiten der dynamischen Metaprogrammierung in Groovy sind der Grund für zwei wesentliche Nachteile der Sprache:

  • Performanz: Das dynamische Delegieren von Methodenaufrufen zur Laufzeit sorgt dafür, dass Groovy-Anwendungen in aller Regel langsamer als vergleichbare Java-Anwendungen sind.
  • IDE-Unterstützung: Die dynamische Typisierung sorgt außerdem dafür, dass Entwicklungsumgebungen nur eingeschränkte Unterstützungen in Form von Codevervollständigung oder Refactoring anbieten können.

Beide Probleme können durch das im Moment häufig diskutierte Projekt Groovy++ beseitigt werden.

Allerdings bietet auch Groovy von Haus aus bereits eine Unterstützung für die Metaprogrammierung zum Kompilierungszeitpunkt. Ein schönes Beispiel dafür ist die Annotation @Delegate, die an Objekt-Attribute einer Klasse angehängt werden kann und dafür sorgt, dass Methodenaufrufe automatisch weiter an die annotierte Instanz delegiert werden. Damit kann eine Art Mehrfachvererbung für Groovy-Klassen erreicht werden.

Short URL for this post: http://wp.me/p4nxik-5U
This entry was posted in Groovy and Grails and tagged , , . Bookmark the permalink.