Dieser Artikel analysiert die Verwendung von transienten Schlüsselwörtern in Java. Teilen Sie es für Ihre Referenz. Die spezifische Analyse ist wie folgt:
Java hat ein Merkmal der Serialisierung. Dies kann einige Vorgänge im Netzwerk erheblich erleichtern, aber gleichzeitig, da es Sicherheitsprobleme beinhaltet, ist es nicht beabsichtigt, alles in der Klasse zu speichern (denn auf diese Weise können andere den Inhalt in der Klasse durch Serialisierung kennen). Wir können den Schlüsselwort -Transienten verwenden, was vorübergehend bedeutet, dh es wird nicht lokal mit der Klasse serialisiert. Nach dem Wiederherstellen gibt es die durch dieses Schlüsselwort definierten Variablen nicht mehr.
In den Programmen, die wir schreiben, müssen spezifische Informationen für ein Programm oder auf einem anderen Lauf desselben Programms in der Festplatte gespeichert werden. Unterstützung für die Objekt -Serialisierung. Es ist jedoch möglich, dass nicht alle Domänen gespeichert werden müssen. .
Schauen wir uns zunächst einen Java -Serialisierungscode an:
öffentliche Klasse loggingInfo implementiert Java.io.Serializable {private date loggingdate ) {String Passage = null; Datum: " + loggingdate.toString () +"/n Passwort: " + Passwort;}}Jetzt erstellen wir eine Instanz dieser Klasse, serialisieren sie und schreiben dann dieses serialisierte Objekt wie Festplatte.
LoggingInfo loginfo = new LoggingInfo ("mike", "mechanics"); (Loginfo); ;Wenn wir diesen Code ausführen, werden wir feststellen, dass das Objekt-Read-Back (De-Serializing)) von Diskuts Passwort als "nicht festgelegt" gedruckt wird. Dies ist das richtige Ergebnis, das wir erwarten, wenn wir die PWD -Domäne als vorübergehend definieren.
Schauen wir uns nun die potenziellen Probleme an, die sich aus der unachtsamen Behandlung von vorübergehenden Bereichen ergeben können. Angenommen, wir ändern die Klassendefinition und geben einen Standardwert für die Transient -Domäne an. Der Code lautet wie folgt:
öffentliche Klasse implementiert Java.io.Serializable {private Datum loggingdate = New Date (); {// wie oben}} Wenn wir nun eine Instanz von GuestLoggingInfo durchgeben, auf die Festplatte schreiben und aus der Festplatte lesen, sehen wir das Readback -Objekt -Druckkennwort immer noch als "nicht festgelegt".
Wenn eine Instanz einer Klasse von der Festplatte gelesen wird, wird der Konstruktor dieser Klasse nicht tatsächlich ausgeführt.
Stattdessen wird ein anhaltender Zustand eines Objekts dieser Klasse geladen und dieser Zustand einem anderen Objekt dieser Klasse zugeordnet.
Ich hoffe, dieser Artikel wird für Java -Programme aller hilfreich sein.