suchen
HeimJavajavaLernprogrammWie kann ich den Annotation-String-Parameter einer Klassendefinition zur Laufzeit ändern?

How Can I Modify a Class Definition's Annotation String Parameter at Runtime?

Ändern Sie den Annotation-String-Parameter der Klassendefinition zur Laufzeit

Einführung

In Szenarien, in denen eine vorkompilierte Klasse importiert und Teil des Klassenpfads ist, ist dies der Fall Es kann wünschenswert sein, den Annotations-String-Parameter zur Laufzeit zu ändern. In diesem Artikel werden mögliche Ansätze untersucht, um dies zu erreichen.

Lösung

Um den Annotationswert für einen bestimmten Schlüssel einer bestimmten Annotation zu ändern, führen Sie die folgenden Schritte aus:

  1. Rufen Sie den Aufrufhandler für die Annotation mit ab Proxy.getInvocationHandler(annotation):

    Object handler = Proxy.getInvocationHandler(annotation);
  2. Erhalten Sie das Feld „memberValues“ vom Handler, indem Sie auf das deklarierte Feld zugreifen und seine Zugänglichkeit auf „true“ setzen:

    Field f = handler.getClass().getDeclaredField("memberValues");
    f.setAccessible(true);
  3. Rufen Sie die Mitgliedswerte als ab Karte:

    Map<string object> memberValues = (Map<string object>) f.get(handler);</string></string>
  4. Rufen Sie den alten Wert aus der Karte mit der Taste ab:

    Object oldValue = memberValues.get(key);
  5. Aktualisieren Sie die Karte mit dem neuen Wert :

    memberValues.put(key, newValue);

Nutzung Beispiel

Betrachten Sie die folgende annotierte Klasse:

@ClassAnnotation("class test")
public static class TestClass {
    @FieldAnnotation("field test")
    public Object field;
    
    @MethodAnnotation("method test")
    public void method() {}
}

Um die Annotationswerte zur Laufzeit zu ändern, verwenden Sie den folgenden Code:

Field field = TestClass.class.getField("field");
final FieldAnnotation fieldAnnotation = field.getAnnotation(FieldAnnotation.class);
System.out.println("old FieldAnnotation = " + fieldAnnotation.value());
changeAnnotationValue(fieldAnnotation, "value", "another field annotation value");
System.out.println("modified FieldAnnotation = " + fieldAnnotation.value());

Dieser Ansatz ermöglicht Ihnen eine dynamische Ändern Sie Annotationsparameter, ohne eine neue Annotationsinstanz zu erstellen, wodurch der Bedarf an Vorkenntnissen über die konkrete Annotationsklasse verringert wird.

Das obige ist der detaillierte Inhalt vonWie kann ich den Annotation-String-Parameter einer Klassendefinition zur Laufzeit ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

PHPStorm Mac-Version

PHPStorm Mac-Version

Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

SublimeText3 Englische Version

SublimeText3 Englische Version

Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

Dreamweaver Mac

Dreamweaver Mac

Visuelle Webentwicklungstools