2016-07-20 5 views
2

Ich habe eine Wrapper-Klasse und ein Objekt, das es einwickelt. Ich möchte wrapper.method() aufrufen und es object.method() gleichsetzen, ohne es explizit für Wrapper zu definieren.Gibt es eine Möglichkeit, die Methode eines umhüllten Members einer Java-Wrapper-Klasse zu "erweitern" oder eine Verknüpfung herzustellen?

Ist das möglich?

Da sonst müssen Sie jede einzelne Methode des Objekts kopieren und einfügen, weil Java alles über Kapselung ist und das Objekt öffentlich machen würde Flüsse rot werden lassen.

+6

Sie meinen, dass Sie vermeiden wollen, Delegieren Methodenaufrufe explizit schreiben? Holen Sie sich einfach Ihre IDE, um sie zu generieren, z. [in Eclipse] (http://stackoverflow.com/questions/15397108/fast-implement-wrapping-delegate-methods-in-eclipse). –

+0

Klingt nach einer Aufgabe, bei der [aspektorientierte Programmierung] (https://en.wikipedia.org/wiki/Aspekt-orientierte_Programmierung) nützlich sein könnte. – Jesper

+1

++ IDE-Generation. Drücken Sie bei Netbeans die Alt-Einfügung, wenn sich der Tastaturfokus innerhalb der Wrapper-Klasse befindet, aber nicht innerhalb einer seiner Methoden, oder klicken Sie mit der rechten Maustaste an eine solche Stelle und wählen Sie "Code einfügen" und dann "Delegieren-Methode" mehrere Methoden gleichzeitig zu delegieren. – megaflop

Antwort

0

Was ist mit wrapper.getObject(). Methode() Aufruf ?? Dies sollte das Problem des Kopierens und Einfügens lösen.

Nach dem Kommentar bearbeiten: Yup! Es würde den Zweck der Verpackung beeinträchtigen.

+0

Das würde das Wrapping des Objekts an erster Stelle beeinträchtigen. – Mena

0

Dies ist in reinem Java nicht möglich, aber Sie können dies mit Lombok erreichen. Siehe @Delegate. Beachten Sie, dass das Feature als "experimentell" gekennzeichnet ist, also mit Vorsicht zu verwenden.

Verwandte Themen