2009-07-01 11 views
4

Ich habe eine Klasse, die ich in ein GWT-Modul aufnehmen möchte. Leider hat es eine Methode, deren Funktionalität von GWT nicht unterstützt wird (es verwendet Class.isInstance, falls Sie neugierig sind). Ich verwende diese Methode nicht in meiner GWT-Anwendung, aber andere Nicht-GWT-Apps verwenden diese Methode, sodass ich sie nicht einfach entfernen kann. Gibt es eine Möglichkeit, diese Methode in meiner Moduldefinition auszuschließen? Vielleicht kann eine Anmerkung zur Methode dies tun?Methoden von GWT-Modulen ausschließen

Antwort

3

Es gibt keine Funktionalität im GWT-Compiler, mit dem Sie dies tun können. Es wurde ausführlich in den GWT-Foren diskutiert, aber sie haben entschieden, es aus einigen sehr guten Gründen nicht umzusetzen.

Ihre einzige Option (da Sie das Objekt zum Entfernen dieser Methode nicht ändern können) besteht darin, ein Übertragungsobjekt zu erstellen, das Sie anstelle des Objekts verwenden, das nicht unter GWT kompiliert wird.

+0

Ja, das scheint der Fall zu sein. Ich habe dieses Übertragungsobjekt erstellt. Danke für die schnelle Antwort. – P4ndaman

+0

Es ist irgendwie lustig, wie GWT eine Teilmenge von Funktionen in einer Bibliotheksklasse unterstützen kann, aber Benutzer können dies nicht für eigene Klassen tun. – P4ndaman

0

Eine weitere Option ist die Verwendung von Super-Source. Sie können ein Duplikat Ihrer Klasse erstellen. Eine solche Klasse wäre eine exakte Kopie minus der Methoden, die Sie ausschließen möchten. Fügen Sie dann die Superquellen-Direktive hinzu, um diese doppelte Klasse einzuschließen.

Der Nachteil ist, dass Sie das Prinzip der Wiederholung nicht (DRY) verletzen. Außerdem ist es wichtig zu wissen, dass im gehosteten Modus die tatsächliche Klasse aufgerufen wird und nicht die Super-Quelle.