logo

преходна ключова дума в Java

преходен е модификатор на променливи, използван в сериализация . По време на сериализация, ако не искаме да запазим стойността на определена променлива във файл, тогава използваме преходен ключова дума. Когато JVM се натъкне преходен ключова дума игнорира оригиналната стойност на променливата и запазва стойността по подразбиране на този тип данни на променливата. преходен ключовата дума играе важна роля за посрещане на ограниченията за сигурност. Има различни примери от реалния живот, при които не искаме да запазваме лични данни във файл. Друга употреба на преходен ключовата дума не е да сериализира променливата, чиято стойност може да бъде изчислена/изведена с помощта на други сериализирани обекти или система, като възраст на човек, текуща дата и т.н. На практика ние сериализирахме само онези полета, които представляват състояние на екземпляр, след като цялата сериализация е предназначена да запази състоянието на обект във файл. Добър навик е да се използва преходен 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 } 
преходни и статични: Тъй като статичен полетата не са част от състоянието на обекта, няма употреба/въздействие от използването преходен ключова дума със статични променливи. Въпреки това няма грешка при компилиране. преходно и окончателно: крайните променливи са директно сериализирани от техните стойности, така че няма полза/въздействие от декларирането на крайната променлива като преходен . 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