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