logo

Java'da geçici anahtar kelime

geçici kullanılan bir değişken değiştiricidir serileştirme . Serileştirme sırasında belirli bir değişkenin değerini bir dosyaya kaydetmek istemiyorsak o zaman şunu kullanırız: geçici anahtar kelime. JVM karşılaştığında geçici anahtar kelimeyi kullanarak değişkenin orijinal değerini yok sayar ve bu değişken veri türünün varsayılan değerini kaydeder. geçici anahtar kelime güvenlik kısıtlamalarını karşılamak için önemli bir rol oynar. Özel verileri dosyaya kaydetmek istemediğimiz çeşitli gerçek hayattan örnekler vardır. Başka bir kullanımı geçici anahtar kelime, değeri diğer serileştirilmiş nesneler veya bir kişinin yaşı, geçerli tarih vb. gibi sistem kullanılarak hesaplanabilen/türetilebilen değişkeni serileştirmek değildir. Pratik olarak, tüm serileştirme tamamen bir nesnenin durumunu bir dosyaya kaydetmek üzereyken, yalnızca bir örneğin durumunu temsil eden alanları serileştirdik. Kullanmak iyi bir alışkanlıktır geçici 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 } 
geçici ve statik: O zamandan beri statik alanlar nesnenin durumunun bir parçası değildir, kullanmanın hiçbir faydası/etkisi yoktur geçici Statik değişkenlere sahip anahtar kelime. Ancak derleme hatası yok. geçici ve nihai: final değişkenleri doğrudan değerlerine göre serileştirilir, dolayısıyla final değişkenini şu şekilde bildirmenin hiçbir faydası/etkisi yoktur. geçici . 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