logo

tranziens kulcsszó a Java nyelven

átmeneti -ban használt változó módosító sorozatosítás . Ha a szerializáláskor nem szeretnénk egy adott változó értékét elmenteni egy fájlba, akkor a átmeneti kulcsszó. Amikor JVM találkozik átmeneti A kulcsszó figyelmen kívül hagyja a változó eredeti értékét, és elmenti az adott változó adattípusának alapértelmezett értékét. átmeneti kulcsszó fontos szerepet játszik a biztonsági korlátozások teljesítésében. Számos valós példa van arra, amikor nem akarunk személyes adatokat fájlba menteni. Egy másik felhasználása átmeneti A kulcsszó az, hogy ne szerializáljuk azt a változót, amelynek értéke más szerializált objektumokkal vagy rendszerekkel számítható/levezethető, mint például egy személy életkora aktuális dátum stb. Gyakorlatilag csak azokat a mezőket szerializáltuk, amelyek a példány állapotát reprezentálják, miután minden szerializálás az objektum állapotának fájlba mentését jelenti. Jó szokás használni átmeneti 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 } 
tranziens és statikus: Mivel statikus a mezők nem részei az objektum állapotának, a használatnak nincs haszna/hatása átmeneti kulcsszó statikus változókkal. Összeállítási hiba azonban nincs. átmeneti és végleges: a végső változókat közvetlenül sorba rendezik az értékük alapján, így nincs értelme/hatása a végső változó deklarálása átmeneti . 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