Tuần tự hóa (Serialization) là quá trình lưu trữ các đối tượng Java dưới dạng chuỗi byte bao gồm dữ liệu của đối tượng cũng như thông tin về kiểu đối tượng và các kiểu dữ liệu lưu trữ trong đối tượng. Tuần tự hóa là việc chuyển đổi giá trị/trạng thái của đối tượng Java thành byte để gửi qua mạng hoặc lưu trữ. Ngược lại, Giải tuần tự hóa (Deserialization) là chuyển đổi byte code thành các đối tượng Java tương ứng.
Biến Transient là biến có giá trị không được tuần tự hóa trong quá trình tuần tự hóa. Chúng ta sẽ nhận được giá trị mặc định cho biến này khi giải tuần tự hóa nó.
Cú pháp
private transient <biến-thành-viên>;
Ví dụ
import java.io.*;
class EmpInfo implements Serializable {
String name;
private transient int age;
String occupation;
public EmpInfo(String name, int age, String occupation) {
this.name = name;
this.age = age;
this.occupation = occupation;
}
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append("Name:" + "\n");
sb.append(this.name + "\n");
sb.append("Age:" + "\n");
sb.append(this.age + "\n");
sb.append("Occupation:" + "\n");
sb.append(this.occupation);
return sb.toString();
}
}
// Lớp chính
public class TransientVarTest {
public static void main(String args[]) throws Exception {
EmpInfo empInfo = new EmpInfo("Adithya", 30, "Java Developer");
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("empInfo"));
oos.writeObject(empInfo);
oos.close();
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("empInfo"));
EmpInfo empInfo1 = (EmpInfo) ois.readObject();
System.out.println(empInfo1);
}
}
Kết quả
Name: Adithya Age: 0 Occupation: Java Developer