logo

parola chiave transitoria in Java

transitorio è un modificatore di variabili utilizzato in serializzazione . Al momento della serializzazione, se non vogliamo salvare il valore di una particolare variabile in un file, utilizziamo transitorio parola chiave. Quando JVM si imbatte transitorio parola chiave ignora il valore originale della variabile e salva il valore predefinito di quel tipo di dati variabile. transitorio La parola chiave gioca un ruolo importante per soddisfare i vincoli di sicurezza. Esistono vari esempi di vita reale in cui non vogliamo salvare i dati privati ​​in un file. Un altro uso di transitorio La parola chiave non è serializzare la variabile il cui valore può essere calcolato/derivato utilizzando altri oggetti o sistemi serializzati come l'età di una persona, la data corrente ecc. In pratica abbiamo serializzato solo quei campi che rappresentano uno stato di istanza dopo che tutta la serializzazione consiste nel salvare lo stato di un oggetto in un file. È una buona abitudine da usare transitorio 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 } 
transitorio e statico: Da statico i campi non fanno parte dello stato dell'oggetto e non vi è alcun utilizzo/impatto dell'utilizzo transitorio parola chiave con variabili statiche. Tuttavia non vi è alcun errore di compilazione. transitorio e finale: le variabili finali sono serializzate direttamente in base ai loro valori, quindi non vi è alcun utilizzo/impatto nel dichiarare la variabile finale come transitorio . 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