Tìm hiểu về Serializable trong Java

Java là ngôn ngữ cho phép người dùng tạo các đối tượng có thể tái sử dụng trong bộ nhớ. Bạn đang muốn tạo một đối tượng nằm ngoài vòng đời của JVM, điều này có khả thi không? Thì Serializable trong Java sẽ là giải pháp cho bạn. Không làm bạn đợi lâu, chúng ta cùng tìm hiểu về Serializable trong Java nhé!

Tìm hiểu về Serializable trong Java

Serializable trong Java là gì?

Serializable trong Java tốt đẹp tuần tự hóa trong Java là một cơ chế để lưu trữ và chuyển đổi trạng thái của một đối tượng (Sự vật) thành một luồng byte để luồng byte này có thể được chuyển đổi trở lại một Đối tượng.

Quá trình chuyển đổi luồng byte thành một Đối tượng được gọi là DeSerialization.

Tới một đối tượng có thể thực hiện Serialization hay nói ngắn gọn là Serializable, lớp Đối tượng cần triển khai giao diện java.io.Serializable.

tim-hieu-ve-serializable-in-java

Một số từ khóa thuthuatkiemtien.com sẽ giữ lại để đồng bộ hóa nội dung trong bài bao gồm:

  • Lớp học: lớp học
  • Giao diện: trưng bày
  • Các đối tượng: sự vật
  • Lĩnh vực: ngôi trường
  • dụng cụ: chỉ kế thừa trong Java, chỉ lớp học thừa hưởng từ Giao diện.

Giao diện java.io.Serializable là gì?

Serializable Là một Giao diện (giao diện) đánh dấu sự vắng mặt của dữ liệu và phương thức. Thông thường, Serializable được sử dụng để đánh dấu các lớp trong Java để các Đối tượng trong lớp có thể nhận được các khả năng kế thừa nhất định.

Ví dụ: lớp học Sinh viên triển khai các giao diện java.io.Serializable. Nhờ đó, Sự vật bên trong lớp học Sinh viên có thể chuyển đổi thành luồng.

import java.io.Serializable;
 
public class HocSinh implements Serializable 
int id;
String name;
 
public HocSinh(int id, String name) 
this.id = id;
this.name = name;

Tại sao sử dụng Serializable?

Khi lập trình với Java, quá trình trao đổi dữ liệu giữa các module khác nhau nhưng đều được viết bằng Java, dữ liệu sẽ được thể hiện bằng byte chứ không phải byte. Các đối tượng. Do đó, chúng ta sẽ cần một cơ chế có thể hiểu các Đối tượng được nhận hoặc gửi. Serializable trong Java là cơ chế đảm nhận việc chuyển đổi.

Quá trình Serialization chuyển đổi giữa Object và dòng byte giữa các module hoạt động hoàn toàn độc lập với bất kỳ nền tảng nào.

tim-hieu-ve-serializable-in-java

Ví dụ về Serializable trong Java

Quá trình giải thích Serializable trong Java sẽ rất khó hiểu đối với những người mới làm quen với Java. Vì vậy, thuthuatkiemtien.com sẽ làm ví dụ để các bạn hiểu rõ hơn về Serializable trong Java. Nếu vẫn cảm thấy khó hiểu, bạn có thể tìm hiểu về ObjectInputStream để quá trình tìm hiểu về Serializable trong Java trở nên dễ dàng hơn nhé!

Khi nào một lớp được coi là có thể nối tiếp thành công?

Để một lớp được coi là Có thể nối tiếp thành công, lớp đó cần phải đáp ứng đầy đủ hai điều kiện sau:

  • Lớp phải triển khai giao diện java.io.Serializable
  • Tất cả cánh đồng trong lớp sẽ cần Serializable. Trong trường hợp cánh đồng không Serializable, trường đó sẽ phải được đánh dấu là tạm thời - tạm thời.

Nếu bạn muốn biết một lớp có Serializable hay không, bạn chỉ cần kiểm tra lớp đó. Trong trường hợp lớp có thể thực thi java.io.Serializable thì lớp có thể nối tiếp và ngược lại.

Ví dụ:

public class NhanVien implements java.io.Serializable 
public String name;
public String address;
public transient int CMND;
public int number;
 
public void mailCheck() 
System.out.println("Gửi mail đến " + name + " " + address);

Sắp xếp thứ tự một đối tượng

Mã ví dụ:

import java.io.*;
public class SerializeDemo 
public static void main(String [] args) 
NhanVien e = new NhanVien();
e.name = "Jame Bond";
e.address = "Ho Chi Minh, Viet Nam";
e.CMND = 11122333;
e.number = 113;
 
try 
FileOutputStream fileOut =
new FileOutputStream("/tmp/employee.ser");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(e);
out.close();
fileOut.close();
System.out.printf("Dữ liệu sau serialized được lưu tại /tmp/employee.ser");
 catch (IOException i) 
i.printStackTrace();


Trong đó, chúng ta có thể thấy rằng:

  • Class ObjectOutputStream được sử dụng để tuần tự hóa một Đối tượng. Chương trình SerializeDemo khởi tạo đối tượng NhanVien và tuần tự hóa Đối tượng này thành một tệp.
  • Khi chương trình SerializeDemo đã hoàn thành, một tệp có tên worker.ser sẽ được tạo ra.

Trong Java, quy ước khi một Đối tượng được tạo, tệp của Đối tượng đó sẽ có phần mở rộng .ser.

Giải mã hóa một đối tượng

Sau khi chúng ta đã Serializing một Object, chúng ta sẽ thực hiện Deserializing một Object với ví dụ sau:

import java.io.*;
public class DeserializeDemo 
public static void main(String [] args) 
NhanVien e = null;
try 
FileInputStream fileIn = new FileInputStream("/tmp/employee.ser");
ObjectInputStream in = new ObjectInputStream(fileIn);
e = (NhanVien) in.readObject();
in.close();
fileIn.close();
 catch (IOException i) 
i.printStackTrace();
return;
 catch (ClassNotFoundException c) 
System.out.println("Không tìm thấy class NhanVien");
c.printStackTrace();
return;

 
System.out.println("Deserialized NhanVien...");
System.out.println("Name: " + e.name);
System.out.println("DiaChi: " + e.address);
System.out.println("CMND: " + e.CMND);
System.out.println("Number: " + e.number);

Sau khi chương trình thực thi, chúng ta sẽ có các kết quả sau:

  • Đã hủy bỏ NhanVien…
  • Tên: James Bond
  • DiaChi: Hồ Chí Minh, Việt Nam
  • ID: 0
  • Số: 113

Trong đó, chúng ta sẽ có những điều cần lưu ý sau:

  • Kết quả trả về của readObject () được tham chiếu đến Đối tượng NhanVien.
  • Bài học ClassNotFoundException khai báo bằng phương pháp readObject (). Khi nào JVM - Máy ảo Java không thể tìm thấy mã bytecode thuộc về lớp học trong khi giải mã Các đối tượng, JVM sẽ "ném" Đối tượng đó vào ClassNotFoundException.
  • Khi nhìn vào kết quả của trường CNIC, bạn có thể thấy giá trị ban đầu của đối tượng là 11122333 trong ví dụ về “Sắp xếp thứ tự một đối tượng”. Tuy nhiên, trường Thẻ căn cước được tạm thời. Do đó, giá trị không thể được gửi đến luồng trong đầu ra và giá trị của trường Thẻ căn cước sau khi deserialize sẽ là 0.

Lưu ý về Serializable trong Java

Sau khi xem qua các ví dụ, thuthuatkiemtien.com sẽ trích xuất những lưu ý thú vị về Serializable trong Java như sau:

  • Nếu lớp cha có triển khai Serializable, lớp con sẽ không cần triển khai Serializable nữa.
  • Ngoài các thuộc tính tạm thời Serialization không thể có một thuộc tính tĩnh.
  • hàm khởi tạo - chức năng khởi tạo sẽ không được gọi nếu một Đối tượng được DeSerialized.
  • Nếu bạn muốn Serializable một Object, tất cả các thuộc tính trong Object đó phải Serializable. Ví dụ, thuộc tính Địa chỉ nhà đối tượng NhanVien bên phải triển khai Serializable. Ngược lại, khi Đối tượng tuần tự hóa NhanVien, Java sẽ báo lỗi java.io.NotSerializableException.
tim-hieu-ve-serializable-in-java

Vậy là thuthuatkiemtien.com đã cùng bạn tìm hiểu về Serializable trong Java qua bài viết này! Hy vọng rằng những kiến ​​thức này sẽ giúp ích cho sự nghiệp của bạn với ngôn ngữ Java! thuthuatkiemtien.com chúc các bạn thành công trên con đường mình đã chọn!

Bài viết có tham khảo nội dung từ TutorialsPoint, TopDev, Oracle, StackJava, v.v.

Câu hỏi thường gặp về Serializable trong Java

Tìm hiểu thêm về Serializable trong Java ở đâu?

Nếu bạn muốn tìm hiểu thêm về Serializable trong Java, bạn có thể tham khảo tài liệu chính thức của Oracle trong JavaWorld và Javase 7! Đối với các tài liệu chính thức của Oracle—- bạn sẽ cần khá nhiều kiến ​​thức chuyên ngành và từ vựng CNTT bằng tiếng Anh để khai thác tối đa kiến ​​thức của chúng! Bạn có thể sử dụng Google dịch, nhưng nội dung dịch máy của Google sẽ rất khó hiểu.

Những công việc nào phù hợp với ngôn ngữ Java?

Thông thường, khi học viết mã, người khác sẽ thường tìm việc trước, sau đó mới tìm ngôn ngữ lập trình phù hợp. Tuy nhiên, nếu bạn học tốt Java và bạn mong muốn tìm được một công việc phù hợp thì những công việc như: xây dựng ứng dụng IOT - Internet of Things, trở thành nhà khoa học dữ liệu, xây dựng ứng dụng ứng dụng trên nền tảng di động Android, .. Ngoài ra, để chứng tỏ bạn "cao cấp" của Java, bạn có thể học cách phát triển trò chơi bằng Java.

Học Java trực tuyến ở đâu?

Để học ngôn ngữ Java trực tuyến nói riêng hay học lập trình trực tuyến nói chung. Bạn chỉ cần một thiết bị kết nối internet cùng với sự kiên trì thì bất kỳ ngôn ngữ nào bạn cũng có thể học thành thạo.

Một số website học Java nổi tiếng như: Oracle Documents, TutorialsPoint, W3Schools, ...

Tôi có nên mua một khóa học Java trực tuyến không?

Câu trả lời sẽ tùy thuộc vào điều kiện kinh tế và nhu cầu của bạn. Nếu bạn muốn có một lộ trình học Java hoàn chỉnh với một người hỗ trợ thì việc tham gia các khóa học trực tuyến là một điều khá tốt cho bạn. Tuy nhiên, bạn có thể tham khảo lộ trình các khóa học tự học trên Youtube và tham gia các cộng đồng để được hỗ trợ khi học hoàn toàn miễn phí!

CÔNG TY CỔ PHẦN TẬP ĐOÀN TINO

  • Trụ sở chính: L17-11, Lầu 17, Tòa nhà Vincom Center, Số 72 Lê Thánh Tôn, P. Bến Nghé, Q.1, TP.
    VPĐD: 42 Trần Phú, P.4, Q.5, TP.HCM
  • Điện thoại: 0364 333 333
    Tổng đài miễn cước: 1800 6734
  • Email: sales@tino.org
  • Trang web: www.tino.org

Xem thêm nhiều bài viết về : Kiến Thức Cơ Bản

Nguồn: Tìm hiểu về Serializable trong Java

Nhận xét

Bài đăng phổ biến từ blog này

3 Cách để kiếm tiền từ blog WordPress

Google AdSense bỏ giới hạn số lượng quảng cáo trên mỗi trang

Toàn tập danh sách liên kết đơn trong C++