lúc lập trình sẵn với Java có lẽ rằng bạn đang bắt gặp tư tưởng serialize duy nhất là lúc hiểu ghi object ra file, mapping với cửa hàng dữ liệu…

Java Serializable là gì?

Serialization trong Java là cơ chế đổi khác tâm trạng của một đối tượng (cực hiếm các ở trong tính vào object) thành một chuỗi byte sao cho chuỗi byte này rất có thể thay đổi ngược chở lại thành một đối tượng.

Bạn đang xem: Serialization là gì

Quá trình biến hóa chuỗi byte thành đối tượng người dùng hotline là deserialization.

Một object có thể serializable (có thể thực hiện Serialization) nếu class của nó tiến hành implements interface java.io.Serializable

Tại sao phải Serialization?

Trong Java, khi thảo luận tài liệu giữa những nguyên tố khác nhau (thân những module thuộc viết bằng Java) thì dữ liệu được thể hiện dưới dạng byte chứ đọng không hẳn là đối tượng người tiêu dùng. Do đó ta cần phải có một phương pháp để hiểu những đối tượng người dùng được gửi với nhận.

Quá trình serilization trọn vẹn tự do với platform (không phụ thuộc vào vào hệ điều hành) cho nên việc chuyển đổi thân byte với object thân các module được đảm bảo.

*

Code ví dụ

lấy một ví dụ mình bao gồm 2 module, một module tiến hành chuyển đối tượng người sử dụng Customer thành byte cùng ghi ra file .Một module triển khai phát âm byte từ tệp tin cùng chuyển ngược trở lại thành đối tượng Customer.

(Trong thực tế thì 2 module rất có thể hội đàm qua database, network chứ không hẳn qua file)

package aviarus-21.com.serializable.demo;import java.io.Serializable;public class Customer implements Serializable private static final long serialVersionUID = 1L; private int id; private String name; private transient String address;
Override public String toString() return "Customer "; // getter - setterĐối tượng Customer đang bao gồm gồm 3 trực thuộc tính là id, name với address trong các số đó address được khắc ghi là transient có nghĩa là nó sẽ không được serialization.private static final long serialVersionUID = 1L; nhằm bảo đảm an toàn chắc chắn là rằng đối tượng trước cùng sau thời điểm serialization là mộtpackage aviarus-21.com.serializable.demo;import java.io.*;public class WriteObjectDemo public static void main(String<> args) throws FileNotFoundException, IOException ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("src/customer.dat"))); Customer customer = new Customer(); customer.setId(1); customer.setName("kai"); customer.setAddress("ha noi"); System.out.println("Customer before serialization:"); System.out.println(customer); oos.writeObject(customer); oos.close(); Method writeObject() đang bình chọn đối tượng được ghi liệu có phải là serializable ko, kế tiếp sẽ gửi thành byte và thực hiện lúc.

Xem thêm: Đâu Là Bí Kíp Của Leflair Là Gì Để Phục Vụ Những Tín Đồ Hàng Hiệu Tại Việt Nam?

Kết quả:

Customer before serialization:Customer

*

Tiếp theo mình tiến hành gọi tài liệu tự tệp tin cùng đưa thành đối tượng người tiêu dùng Customer.

package aviarus-21.com.serializable.demo;import java.io.*;public class ReadObjectDemo public static void main(String<> args) throws FileNotFoundException, IOException, ClassNotFoundException ObjectInputStream ois = new ObjectInputStream(new FileInputStream(new File("src/customer.dat"))); System.out.println("Customer after deserialization:"); Customer customer = (Customer) ois.readObject(); System.out.println(customer); ois.close(); Method readObject() đã chuyển byte thành đối tượng.

Vì mình ghi ra file dạng đối tượng Customer yêu cầu sau khi readObject() bản thân đã xay thành kiểu đối tượng người tiêu dùng Customer (Nếu bạn Lúc ra tệp tin dạng Map, List thì dịp đọc các bạn yêu cầu ép đúng đẳng cấp tương xứng.

Kết quả:

Customer after deserialization:Customer Trường address là transient đề xuất sau thời điểm deserialization vẫn không tồn tại dữ liệu.

Một số chú ý về Serialization trong Java

Nếu class cha implement Serializable thì những class con không phải thực hiện implement SerializablenữaCác trực thuộc tính static và transient sẽ không được serializationHàm khởi chế tác (constructor) sẽ không còn được Hotline lúc một đối tượng người tiêu dùng được deserializationkhi tiến hành serialization một đối tượng người sử dụng thì tất cả các thuộc tính bên trong nó đa số buộc phải là serializable (áp dụng cùng với các trực thuộc tính có hình trạng đối tượng người dùng, ví dụ object Person có nằm trong tính Address thì nằm trong tính Address đó cũng yêu cầu implement Serializable nếu không sẽ ảnh hưởng lỗi java.io.NotSerializableException Lúc tiến hành serialization đối tượng person).

Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *