övergående nyckelord i Java

övergående är en variabelmodifierare som används i serialisering . Vid tidpunkten för serialisering om vi inte vill spara värdet av en viss variabel i en fil så använder vi övergående nyckelord. När JVM stöter på övergående nyckelordet ignorerar det ursprungliga värdet för variabeln och sparar standardvärdet för den variabeldatatypen. övergående nyckelord spelar en viktig roll för att möta säkerhetsbegränsningar. Det finns olika verkliga exempel där vi inte vill spara privata data i fil. En annan användning av övergående nyckelordet är inte att serialisera variabeln vars värde kan beräknas/härledas med hjälp av andra serialiserade objekt eller system såsom ålder på en person aktuellt datum etc. Praktiskt taget serialiserade vi bara de fält som representerar ett instanstillstånd efter att all serialisering handlar om att spara tillståndet för ett objekt till en fil. Det är en god vana att använda övergående 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   }   
transient och statisk: Sedan statisk fält är inte en del av objektets tillstånd, det finns ingen användning/påverkan av att använda övergående nyckelord med statiska variabler. Det finns dock inget kompileringsfel. övergående och slutlig: slutvariabler serialiseras direkt av deras värden så det finns ingen nytta/effekt av att deklarera slutvariabel som övergående . 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