Warum hat Java transient Felder?
Antworten
Zu viele Anzeigen?Auch andere Serialisierungssysteme als das native Java-System können diesen Modifikator verwenden. Hibernate, zum Beispiel, wird keine Felder persistieren, die entweder mit @Transient oder die transient Modifikator. Auch Terrakotta respektiert diesen Modifikator.
Ich glaube, der Modifikator bedeutet im übertragenen Sinne: "Dieses Feld ist nur für die speicherinterne Verwendung bestimmt. Es ist nicht portierbar", d.h. man kann sich nicht auf seinen Wert in einem anderen VM-Speicherbereich verlassen. Ähnlich wie flüchtig bedeutet, dass man sich nicht auf bestimmte Speicher- und Thread-Semantiken verlassen kann.
Bevor ich diese Frage beantworte, muss ich die Serialisierung erklären, denn wenn Sie verstehen, was Serialisierung in der Computerwissenschaft bedeutet, können Sie dieses Schlüsselwort leicht verstehen.
Wenn ein Objekt über das Netzwerk übertragen / auf einem physischen Medium (Datei,...) gespeichert wird, muss das Objekt "serialisiert" werden. Bei der Serialisierung werden Objektreihen in Bytes umgewandelt. Diese Bytes werden über das Netzwerk gesendet/gespeichert und das Objekt wird aus diesen Bytes neu erstellt.
Exemple :
public class Foo implements Serializable
{
private String attr1;
private String attr2;
...
}
Wenn es nun ein Feld in dieser Klasse gibt, das Sie nicht übertragen oder speichern möchten, können Sie die Funktion transient
Stichwort
private transient attr2;
Dadurch wird verhindert, dass die Feldform bei der Serialisierung der Klasse einbezogen wird.