2017-02-11 2 views
2

Ich möchte beschränken, dass eine Annotation nur auf Methoden angewendet wird, die eine andere Annotation haben. Zum Beispiel erlauben Sie nur @A auf Methoden, die @B hat. Ich sehe keine direkte Möglichkeit, dies mit dem Annotationstyp @Target zu tun. Kann ich das irgendwie erreichen?Annotationsziel nur auf Methoden mit einer anderen Annotation beschränken

+0

Haben Sie über eine Reflexion nachgedacht? –

+0

@ pm-77-1 Ich kann diese Validierung zur Laufzeit mit Reflektion tun. Aber mit Absicht ist dies zur Kompilierzeit durchzusetzen. –

+1

Können Sie die Absicht von '@ A' als Element von' @ B' einkapseln? Das erscheint sinnvoller, wenn diese miteinander gekoppelt werden sollen. Es sei denn, Sie haben keine Kontrolle über die Definition von '@ B'. –

Antwort

0

Ich kenne keinen sprachdefinierten Mechanismus, der verwendet werden könnte, um die Platzierung einer Anmerkung zu verhindern, außer wenn eine andere Anmerkung vorhanden war. Java-Annotationen akzeptieren die Meta-Annotation @Target, mit der die Annotation auf bestimmte Orte beschränkt werden kann. Das scheint die nächste Sache zu sein, die getan werden kann.

Wie andere bemerkt haben, müssten Sie die Verarbeitung von Anmerkungen erweitern, um diese Funktion hinzuzufügen. Ich könnte mir vorstellen, dass Sie mit einer nicht zu geringen Menge an Arbeit diese Art von Erweiterung zu einer Entwicklungsumgebung wie Eclipse hinzufügen könnten.

Verwandte Themen