Kann ein transient
Feld in einer Klasse mit Reflektion erhalten werden? (mit getDeclaredField(..)
)Kann ein transientes Feld in einer Klasse durch Reflexion erhalten werden
Antwort
Ja, Es ist ein normales Feld. Sie können prüfen, ob es durch vergänglich ist:
Modifier.isTransient(field.getModifiers());
transiente: Ein Schlüsselwort in der Java-Programmiersprache, die ein Feld eines Objekts ist nicht Teil der serialisierten Form anzeigt. Wenn ein Objekt serialisiert wird, sind die Werte seiner Übergangsfelder nicht in der seriellen Darstellung enthalten, während die Werte seiner nicht-flüchtigen Felder enthalten sind.
Also kein logischer Grund dafür, dass es nicht durch Reflexion zugänglich ist. Es wird der Wert des Feldes ignoriert (manchmal), nicht das Feld selbst.
(btw, was Sie von nur versuchen, behindert getDeclaredField("yourTransientField")
zu nennen?)
transient
zeigt an, dass das Feld nicht serialisiert werden. Das Feld wird immer noch von der Klasse deklariert, also ist es ein faires Spiel zum Nachdenken.
Unter allen Objekten, die serialisiert werden müssen, gibt es solche, die nicht serialisiert werden müssen. Deshalb sind diese Objekte mit dem Schlüsselwort transient gekennzeichnet.
transient
Felder haben nichts mit Reflexion zu tun. Das Schlüsselwort signalisiert nur, dass ein Feld während Java serialization Prozess übersprungen werden sollte. So kann Reflexion auf transient
Felder wie alle anderen Felder zugreifen.
Verpasste eine Parens in der ersten Code-Chunk :) – RCIX