Từ khóa transient trong java được sử dụng trong serialization. Nếu bạn định nghĩa bất kỳ thành viên dữ liệu nào là transient, nó sẽ không được đánh dấu là tuần tự (serialize).
Ví dụ, khai báo một lớp Student, có ba thành viên dữ liệu là id, name và age. Lớp Student implements giao tiếp Serializable, tất cả các giá trị sẽ được tuần tự nhưng nếu bạn không muốn tuần tự cho một giá trị, ví dụ: age thì bạn có thể khai báo age với từ khóa transient.
Ví dụ về từ khóa transient trong java
Trong ví dụ này, chúng ta tạo ra hai lớp Student và PersistExample. Thành viên dữ liệu của lớp Student được khai báo với từ khóa transient, giá trị của nó sẽ không được tuần tự.
Khi đối tượng được giải mã tuần tự hóa, bạn sẽ nhân được giá trị mặc định của kiểu dữ liệu của biến được khai báo với từ khóa transient.
Tạo lớp Student với biến age được khai báo với từ khóa transient.
import java.io.Serializable; public class Student implements Serializable { int id; String name; transient int age; public Student(int id, String name, int age) { this.id = id; this.name = name; this.age = age; } }
Bây giờ tạo lớp PersistExample và sử dụng ObjectOutputStream để ghi đối tượng student vào file student.txt
import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; public class PersistExample { public static void main(String args[]) throws Exception { ObjectOutputStream oos = null; try { // tạo object ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("student.txt")); // tạo object student Student student = new Student(1001, "Tran Van A", 22); // ghi student vào file oos.writeObject(student); oos.flush(); } catch (IOException ex) { ex.printStackTrace(); } finally { oos.close(); } System.out.println("success..."); } }
Output:
success...
Bây giờ tạo lớp DePersist để đọc đối tượng student được ghi vào file student.txt ở trên.
import java.io.FileInputStream; import java.io.IOException; import java.io.ObjectInputStream; public class DePersist { public static void main(String args[]) throws Exception { ObjectInputStream ois = null; try { ois = new ObjectInputStream(new FileInputStream("student.txt")); Student student = (Student) ois.readObject(); System.out.println(student.id + " " + student.name + " " + student.age); } catch (IOException ex) { ex.printStackTrace(); } finally { ois.close(); } } }
Output:
1001 Tran Van A 0