text: Das transient Schlüsselwort in Java wird verwendet, um anzugeben, dass ein Feld nicht serialisiert werden sollte.
  Variablen können markiert sein transient zu weisen darauf hin, dass sie nicht Teil der persistenter Zustand eines Objekts.
  Beispielsweise können Sie Felder haben, die von anderen Feldern abgeleitet sind, und sollten dies nur programmgesteuert tun, statt den Status über die Serialisierung beibehalten zu lassen.
  In diesem Beispiel thumbnailImage ist ein Miniaturbild, das beim Aufruf von generateThumbnail Methode.
  Das thumbnailImage Feld ist als markiert transient, also nur das Original image wird serialisiert, anstatt das Originalbild und das Miniaturbild zu erhalten. Dies bedeutet, dass weniger Speicher benötigt wird, um das serialisierte Objekt zu speichern. (Dies ist natürlich abhängig von den Anforderungen des Systems wünschenswert oder nicht - dies ist nur ein Beispiel.)
  Zum Zeitpunkt der Deserialisierung hat die readObject Die Methode wird aufgerufen, um alle Operationen auszuführen, die erforderlich sind, um den Status des Objekts in den Zustand zurückzusetzen, in dem die Serialisierung stattgefunden hat. Hier muss das Thumbnail erzeugt werden, also der readObject Methode wird überschrieben, so dass das Thumbnail durch Aufrufen des generateThumbnail Methode.
  Für weitere Informationen, die Entdecken Sie die Geheimnisse der Java-Serialisierungs-API Artikel (der ursprünglich im Sun Developer Network verfügbar war) enthält einen Abschnitt, in dem die Verwendung von und ein Szenario vorgestellt wird, in dem der transient Schlüsselwort wird verwendet, um die Serialisierung bestimmter Felder zu verhindern.
  Bevor ich das verstehe transient Stichwort muss man das Konzept der Serialisierung verstehen. Wenn der Leser über die Serialisierung informiert ist, überspringen Sie bitte den ersten Punkt.
  Bei der Serialisierung wird der Status des Objekts persistent gemacht. Das heißt, der Status des Objekts wird in einen Bytestrom umgewandelt und in einer Datei gespeichert. Auf die gleiche Weise können wir die Deserialisierung verwenden, um den Status des Objekts aus Bytes zurückzuholen. Dies ist eines der wichtigsten Konzepte in der Java-Programmierung, da die Serialisierung hauptsächlich in der Netzwerkprogrammierung verwendet wird. Die Objekte, die über das Netzwerk übertragen werden sollen, müssen in Bytes konvertiert werden. Zu diesem Zweck muss jede Klasse oder Schnittstelle die Serializable Schnittstelle. Es ist eine Marker-Schnittstelle ohne irgendwelche Methoden.
  Standardmäßig werden alle Variablen des Objekts in einen dauerhaften Zustand konvertiert. In einigen Fällen möchten Sie möglicherweise einige Variablen nicht beibehalten, da Sie diese Variablen nicht beibehalten müssen. So können Sie diese Variablen als deklarieren transient. Wenn die Variable als deklariert ist transient, dann wird es nicht bestehen bleiben. Das ist der Hauptzweck des transient Stichwort.
  Zweiter Vorname wird als deklariert transient, so wird es nicht im persistenten Speicher gespeichert.
  In einem Objekt haben Sie möglicherweise Informationen, die Sie nicht serialisieren / persistieren möchten (vielleicht eine Referenz auf ein Eltern-Factory-Objekt), oder vielleicht macht es keinen Sinn, sie zu serialisieren. Wenn diese als "vorübergehend" gekennzeichnet werden, bedeutet dies, dass der Serialisierungsmechanismus diese Felder ignoriert.
  Im einfachen Satz wird jede Variable, die mit einem transienten Schlüsselwort modifiziert wird, in java zur transienten Variable.
  Ein transientes Schlüsselwort bietet Ihnen eine gewisse Kontrolle über den Serialisierungsprozess und gibt Ihnen die Flexibilität, einige der Objekteigenschaften vom Serialisierungsprozess auszuschließen. Manchmal macht es Sinn, bestimmte Attribute eines Objekts nicht zu serialisieren, wir werden sehen, welche Variablen nicht serialisiert werden sollten und im nächsten Abschnitt transient gemacht werden sollten.
  Da wir den Zweck eines vorübergehenden Schlüsselworts kennen oder transiente Variable haben, ist es sinnvoll, darüber nachzudenken, welche Variable als vorübergehend markiert werden sollte. Meine Regel ist, dass jede Variable, deren Wert aus anderen Variablen berechnet werden kann, nicht gespeichert werden muss. Zum Beispiel, wenn Sie ein Feld namens "interest" haben, dessen Wert aus anderen Feldern wie z. Prinzip, Rate, Zeit etc, dann gibt es keine Notwendigkeit, es zu serialisieren.
  Ein weiteres Beispiel ist die Wortzählung. Wenn Sie Artikel speichern, müssen Sie die Wortzahl nicht speichern, da sie erstellt werden kann, wenn der Artikel deserialisiert wird. Ein anderes gutes Beispiel für vorübergehendes Schlüsselwort ist "Logger", da Sie meistens eine Logger-Instanz für die Anmeldung in Java haben, aber Sie wollen sicher nicht, dass es korrekt serialisiert?
  Ein Beispiel, wenn dies nützlich sein könnte, sind Variablen, die nur im Kontext einer bestimmten Objektinstanz Sinn machen und die nach der Serialisierung und Deserialisierung des Objekts ungültig werden. In diesem Fall ist es nützlich, dass diese Variablen werden null Stattdessen können Sie sie bei Bedarf mit nützlichen Daten neu initialisieren.
  transient wird verwendet, um anzuzeigen, dass ein Klassenfeld nicht serialisiert werden muss. Das wahrscheinlich beste Beispiel ist ein Thread Feld. Es gibt normalerweise keinen Grund, eine zu serialisieren Thread, da sein Zustand sehr "strömungsspezifisch" ist.
  Andere Serialisierungssysteme als das native Java können diesen Modifikator auch verwenden. Hibernate beispielsweise behält Felder, die mit beiden markiert sind, nicht bei @Transient oder der vorübergehendModifikator. Auch Terrakotta respektiert diesen Modifikator.
  Ich glaube, die bildliche Bedeutung des Modifikators ist "dieses Feld ist nur für den In-Memory-Gebrauch. Behalten Sie es nicht oder bewegen Sie es außerhalb dieser bestimmten VM in keiner Weise. Es ist nicht tragbar". Sie können sich nicht auf seinen Wert in einem anderen VM-Speicherbereich verlassen. Ähnlich wie flüchtig bedeutet, dass Sie sich nicht auf bestimmte Speicher- und Thread-Semantiken verlassen können.
  Prinzip des Unix Domain Sockets. Wie funktioniert es? Wie sucht man in Eclipse nach einer Java-Zeichenkette? Was ist die UTF-8-Darstellung von "Ende der Zeile" in der Textdatei? Verwenden von Tidy2 für Notepad ++ Beweis durch Induktion auf binären Bäumen Iterieren über heterogenen Container Wie migriert exsiting sqlite Tabelle zu ROOM Db, die Datentypen wie VCHAR, TIMESTAMP haben?