Anonym innere Klasse in groovy
-
10-07-2019 - |
Frage
Ich bin auf der Suche in die groovy-Pförtchen Integration und den Mangel an anonymen inneren Klassen scheint ein Problem zu sein, wenn die Ereignishandler zu schreiben. Gibt es eine Möglichkeit, diesen groovier Code zu schreiben
import org.apache.wicket.PageParameters
import org.apache.wicket.markup.html.basic.Label
import org.apache.wicket.markup.html.link.Link
import org.apache.wicket.markup.html.WebPage
/**
* Homepage
*/
class HomePage extends WebPage {
public HomePage(final PageParameters parameters) {
// Add the simplest type of label
add(new Label("message", "Wicket running!"));
def link1 = new ClickHandler("link1") //in java, defined inline
add(link1);
}
}
class ClickHandler extends Link{
ClickHandler(String id) {
super(id);
}
void onClick(){println "Hi"}
}
Lösung
Ich kann mich irren, aber nicht das, was die WickeBuilder versucht zu lösen :
Die Wicket Builder Utility Arbeitsgeräte ein Groovy-Builder für den Bau Wicket Component Bäume.
Während der Bauherr mit macht Gebäude Komponente Bäume einfacher und klarer den Leser, war der ursprüngliche Treiber die Tatsache, dass Groovy nicht erlaubt anonyme innere Klassen. Gatter beruht auf Methoden überwiegender bieten kundenspezifische Funktionalität für viele Komponententypen. Groovy kann verwendet werden, Wicket Seite Klassen zu codieren, aber jeder Klasse, die außer Kraft gesetzt wird, muss eine benannte Klassendefinition. Möglich, aber klobig.
Die WicketBuilder simuliert diese überschreibt mit dem Namen Closures. Verschlüsse sind im Wesentlichen tragbar Codeblöcke. Unter der Haube des Builder erstellt dynamische Klasse Überschreibungen und führt die Verschlüsse, wenn die benannte Methode aufgerufen wird.
[...]
Andere Tipps
Ermh .. Das sieht nicht wie eine „gute“ Alternative, aber es scheint, die „offizielle“ Groovy Alternative zu sein:
Unser Fahrzeug Beispiel für groovy 1.7.x und 1.4.x Wicket http://wash-inside-out.blogspot.com/2010/08/wicket-and-groovy-integration.html
Ich benutze eigentlich nicht oft stark, aber habe mich gebeten, die gleiche Frage vor einigen Monaten. Ich habe versucht, aus verschiedenen Ansätzen
http: //rschmid.wordpress. com / 2009/05/03 / anonymouse-Innenklassen-in-groovy /
Groovy 1.7 und höher unterstützt anonyme innere Klassen. Siehe groovy 1.7 Release Notes .