Tại Sao Java Có Các Trường Tạm Thời? ? Serialization Và Deserialization Trong Java

Serialization trong Java

Tuần tự hoá trong java hay tuần tự hóa trong java là một cơ chế để ghi trạng thái của một đối tượng vào một byte stream.

Bạn đang xem: Tại sao java có các trường tạm thời?

Nó chủ yếu được sử dụng trong các công nghệ Hibernate, RMI, JPA, EJB và JMS.

Hoạt động ngược lại của serialization được gọi là giải phóng mặt bằng.

Ưu điểm của Serialization trong java

Nó chủ yếu được sử dụng để truyền trạng thái của đối tượng qua mạng (được biết đến như marshaling).

*

Kết quả không có giá trị company, do thuộc tính này là tĩnh.

Xem thêm: Bà Bầu Ăn Mít Có Tốt Cho Bà Bầu Không ? Những Trường Hợp Mẹ Bầu Không Được Ăn Mít

Java Serialization với array hoặc collection

Trong trường hợp mảng (array) hoặc tập hợp (collection), tất cả các đối tượng của array hoặc collection phải được tuần tự hóa (Serializable). Nếu bất kỳ đối tượng không phải là serializable, thì quá trình serialization sẽ không thành công.

Externalizable trong java

Giao diện Có thể ngoại hóa cung cấp khả năng viết trạng thái của một đối tượng vào một byte stream ở định dạng nén. Nó không phải là một giao diện đánh dấu.

Giao diện Có thể ngoại hóa cung cấp hai phương thức:

public void writeExternal (ObjectOutput out) ném IOExceptionpublic void readExternal (ObjectInput in) ném IOException

Từ khóa transient trong java

Nếu không muốn nối tiếp bất kỳ thuộc tính nào của một lớp, bạn có thể đánh dấu nó với từ khóa tạm thời.

Xem thêm: Vc Red Là Gì – Cách Loại Bỏ Như Thế Nào

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.

package com.balkanpoliticalclub.net.serialize; import java.io.Serializable; public class Student thực hiện Serializable {private static final long serialVersionUID = -266706354210367639L; private int id; private String name; private transient int age; public Student (int id, Tên chuỗi, int age) {this.id = id; this.name = name; this.age = age;}
Overridepublic String toString () {return “Sinh viên “;}}Ví dụ sử dụng ObjectOutputStream để ghi đối tượng student vào file

package com.balkanpoliticalclub.net.bytestream; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; public class SerializationTransientExample {public static void main (String args) throws Exception {ObjectOutputStream oos = null; try {oos = new ObjectOutputStream (new FileOutputStream (“data / student.txt”)); Student student = new Student (1, “balkanpoliticalclub.net”, 28); oos.writeObject (student); oos.flush (); } catch (IOException ex) {ex.printStackTrace ();} last {oos.close ();} System.out.println (“success …”);}} Ví dụ sử dụng ObjectInputStream để đọc sinh viên đối tượng tập tin

package com.balkanpoliticalclub.net.bytestream; import java.io.FileInputStream; import java.io.IOException; import java.io.ObjectInputStream; public class DeserializationTransientExample {public static void main (String args) throws Exception {ObjectInputStream ois = null; try {ois = new ObjectInputStream (new FileInputStream (“data / student.txt”)); Student student = (Student) ois.readObject (); System.out.println (student);} catch (IOException ex) {ex. printStackTrace ();} last {ois.close ();}}} Thực thi chương trình SerializationTransientExample, sau đó thực thi chương trình DeserializationTransientExample. Ta có kết quả như sau:

Chuyên mục: Review tổng hợp

Author: admin.ta

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 *