Ich verwende einige Anmerkungen, um Werte von Feldern in Klassen dynamisch festzulegen. Da ich dies unabhängig davon tun möchte, ob es öffentlich, geschützt oder privat ist, rufe ich setAccessible(true)
das Field-Objekt jedes Mal auf, bevor ich die set()
Methode aufrufe. Meine Frage ist, welche Auswirkungen der setAccessible()
Anruf auf das Feld selbst hat.
Angenommen, es handelt sich um ein privates Feld, und dieser Satz von Code ruft auf setAccessible(true)
. Wenn an einer anderen Stelle im Code dasselbe Feld durch Reflexion abgerufen werden würde, wäre das Feld dann bereits zugänglich? Oder geben die Methoden getDeclaredFields()
und getDeclaredField()
jedes Mal neue Instanzen eines Field-Objekts zurück?
Ich denke, eine andere Möglichkeit, die Frage zu stellen, ist, wenn ich anrufe setAccessible(true)
, wie wichtig es ist, sie nach Abschluss auf den ursprünglichen Wert zurückzusetzen.