przejściowe słowo kluczowe w Javie

przejściowy jest modyfikatorem zmiennych używanym w serializacja . Jeśli w momencie serializacji nie chcemy zapisywać wartości danej zmiennej w pliku to korzystamy z niej przejściowy słowo kluczowe. Kiedy pojawia się JVM przejściowy słowo kluczowe ignoruje oryginalną wartość zmiennej i zapisuje wartość domyślną tego typu danych zmiennej. przejściowy Słowo kluczowe odgrywa ważną rolę w spełnianiu ograniczeń bezpieczeństwa. Istnieje wiele przykładów z życia wziętych, w których nie chcemy zapisywać prywatnych danych w pliku. Inne zastosowanie przejściowy słowem kluczowym nie jest serializowanie zmiennej, której wartość można obliczyć/wyprowadzić przy użyciu innych serializowanych obiektów lub systemów, takich jak wiek osoby, bieżąca data itp. W praktyce serializowaliśmy tylko te pola, które reprezentują stan instancji, ponieważ cała serializacja ma na celu zapisanie stanu obiektu do pliku. Dobrym nawykiem jest stosowanie przejściowy 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   }   
przejściowe i statyczne: Od statyczny pola nie są częścią stanu obiektu, ich użycie nie ma żadnego zastosowania/skutku przejściowy słowo kluczowe ze zmiennymi statycznymi. Jednak nie ma błędu kompilacji. przejściowe i ostateczne: zmienne końcowe są bezpośrednio serializowane według ich wartości, więc deklarowanie zmiennej końcowej jako nie ma żadnego sensu/skutku przejściowy . 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