Computer >> Máy Tính >  >> Lập trình >> Java

Làm thế nào tạm thời hoạt động với cuối cùng trong tuần tự hóa Java?

Trong Java, tuần tự hóa là một khái niệm mà chúng ta có thể viết trạng thái của một đối tượng thành một luồng byte để chúng ta có thể chuyển nó qua mạng (sử dụng các công nghệ như JPA và RMI).

Biến tạm thời - Các giá trị của các biến nhất thời không bao giờ được xem xét (chúng bị loại khỏi quá trình tuần tự hóa). tức là khi chúng ta khai báo một biến tạm thời, sau khi hủy tuần tự hóa, giá trị của nó sẽ luôn là null, false hoặc bằng 0 (giá trị mặc định).

Do đó, trong khi tuần tự hóa một đối tượng của một lớp, nếu bạn muốn JVM bỏ qua một biến cá thể cụ thể, bạn có thể khai báo nó tạm thời.

public transient int limit = 55; // will not persist
public int b; // will persist

Ví dụ

Trong chương trình java sau, lớp Student có hai biến thể hiện là tên và tuổi, trong đó tuổi được khai báo tạm thời. Trong một lớp khác có tên SerializeExample chúng tôi đang cố gắng tuần tự hóa và giải mã hóa đối tượng Student và hiển thị các biến phiên bản của nó. Vì tuổi được ẩn (tạm thời) nên chỉ giá trị tên được hiển thị.

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
class Student implements Serializable {
   private String name;
   private transient int age;
   public Student(String name, int age) {
      this.name = name;
      this.age = age;
   }
   public void display() {
      System.out.println("Name: "+this.name);
      System.out.println("Age: "+this.age);
   }
}
public class SerializeExample {
   public static void main(String args[]) throws Exception {
      //Creating a Student object
      Student std = new Student("Sarmista", 27);
      //Serializing the object
      FileOutputStream fos = new FileOutputStream("e:\\student.ser");
      ObjectOutputStream oos = new ObjectOutputStream(fos);
      oos.writeObject(std);
      oos.close();
      fos.close();
      System.out.println("Values before de-serialization: ");
      std.display();
      System.out.println("Object serialized.......");
      //De-serializing the object
      FileInputStream fis = new FileInputStream("e:\\student.ser");
      ObjectInputStream ois = new ObjectInputStream(fis);
      Student deSerializedStd = (Student) ois.readObject();
      System.out.println("Object de-serialized.......");
      ois.close();
      fis.close();
      System.out.println("Values after de-serialization");
      deSerializedStd.display();
   }
}

Đầu ra

Values before de-serialization:
Name: Sarmista
Age: 27
Object serialized.......
Object de-serialized.......
Values after de-serialization
Name: Sarmista
Age: 0