logo

transientes Schlüsselwort in Java

vergänglich ist ein Variablenmodifikator, der in verwendet wird Serialisierung . Wenn wir zum Zeitpunkt der Serialisierung den Wert einer bestimmten Variablen nicht in einer Datei speichern möchten, verwenden wir vergänglich Stichwort. Wenn JVM rüberkommt vergänglich Schlüsselwort ignoriert den ursprünglichen Wert der Variablen und speichert den Standardwert dieses Variablendatentyps. vergänglich Das Schlüsselwort spielt eine wichtige Rolle, um Sicherheitsbeschränkungen zu erfüllen. Es gibt verschiedene Beispiele aus der Praxis, bei denen wir keine privaten Daten in einer Datei speichern möchten. Eine andere Verwendung von vergänglich Das Schlüsselwort besteht nicht darin, die Variable zu serialisieren, deren Wert mithilfe anderer serialisierter Objekte oder Systeme wie dem Alter einer Person, dem aktuellen Datum usw. berechnet/abgeleitet werden kann. Praktisch haben wir nur die Felder serialisiert, die einen Status einer Instanz darstellen, nachdem es bei der Serialisierung lediglich darum geht, den Status eines Objekts in einer Datei zu speichern. Es ist eine gute Angewohnheit, es zu nutzen vergänglich keyword with private confidential fields of a class during serialization. Java
// A sample class that uses transient keyword to // skip their serialization. class Test implements Serializable {  // Making password transient for security  private transient String password;  // Making age transient as age is auto-  // computable from DOB and current date.  transient int age;  // serialize other fields  private String username email;  Date dob;  // other code } 
transient und statisch: Seit statisch Felder sind nicht Teil des Zustands des Objekts. Die Verwendung hat keinen Nutzen/keine Auswirkung vergänglich Schlüsselwort mit statischen Variablen. Es liegt jedoch kein Kompilierungsfehler vor. vorübergehend und endgültig: Endvariablen werden direkt nach ihren Werten serialisiert, sodass die Deklaration der Endvariablen als keinen Nutzen/Auswirkung hat vergänglich . There is no compile-time error though. Java
// Java program to demonstrate transient keyword // Filename Test.java import java.io.*; class Test implements Serializable {  // Normal variables  int i = 10 j = 20;  // Transient variables  transient int k = 30;  // Use of transient has no impact here  transient static int l = 40;  transient final int m = 50;  public static void main(String[] args) throws Exception  {  Test input = new Test();  // serialization  FileOutputStream fos = new FileOutputStream('abc.txt');  ObjectOutputStream oos = new ObjectOutputStream(fos);  oos.writeObject(input);  // de-serialization  FileInputStream fis = new FileInputStream('abc.txt');  ObjectInputStream ois = new ObjectInputStream(fis);  Test output = (Test)ois.readObject();  System.out.println('i = ' + output.i);  System.out.println('j = ' + output.j);  System.out.println('k = ' + output.k);  System.out.println('l = ' + output.l);   System.out.println('m = ' + output.m);  } } 
Output :
i = 10 j = 20 k = 0 l = 40 m = 50