Cách khắc phục lỗi java.io.NotSerializableException trong java?

Khi lập trình, các bạn chắc hẳn sẽ có những lỗi. Một trong những lỗi hay gặp khi làm việc với file để ghi object đó là java.io.NotSerializableException, đừng quá lo lắng về lỗi trên bởi vì bạn sẽ được giải quyết nhanh gọn lẹ, đơn giản trong bài viết này.

Đầu tiên, chúng ta hãy thực hiện lại quá trình bị lỗi:

Thực hiện lại quá trình lỗi

Student.java

Ex1.java

Khi các bạn chạy chương trình thì kết quả output như sau:

 

Lỗi java.io.NotSerializableException này xảy ra bởi vì  khi các bạn ghi một object vào file thì bắt buộc phải implements Serializable. 

Vì sao phải implements Serializable khi ghi đọc một object?

Theo cơ chế của InputStream và OutputStream thì chúng ta cần viết hay đọc file thì cần truyền vào một mảng byte. Tuy nhiên khi chúng ta viết hay đọc một object thì không thỏa mãn điều kiện trên. Lúc này tron java sinh ra Serialization.

Serialization là một khái niệm giúp các bạn có thể viết một object nào đó thì lúc này nó sẽ chuyển về dưới dạng mảng byte và lưu vào trong bộ nhớ. Từ đó khi đọc file ta cũng có Deserialization giúp ta có thể chuyển đổi từ mảng byte sang object để có thể lấy được thông tin cần thiết.

Vậy, để cho một object có thể sử dụng Serialization, chỉ cần thực hiện cho object của chúng ta hiện thực một interface với tên gọi là java.io.Serializable. Interface này không có bất kỳ một phương thức nào cần override.

Từ đó, khi chạy chương trình thì không còn xuất hiện lỗi trên nữa.

Ở phần trên, các ban có thể thêm vào thêm một dòng code như sau:

serialVersionUID là gì?

serialVersionUID là để chắc chắn rằng khi ghi file và đọc file thì trước sau như một.  Nghĩa là nó sẽ dựa vào UID này để xử lý object bạn đang thực thi.

Trên là hướng dẫn giúp bạn giải quyết được vấn đề khắc phục lỗi NotSerializableException trong java cũng như hiểu serialVersionUID là gì? Serializable là gì? Deserialization là gì?

Happy code!

Các bài viết cùng chủ đề:

Top