Lỗi khi đọc ghi Object trong Java

Mình muốn đọc và ghi một Object trong chương trình Java của minh, và mình sử dụng Serialization trong Java.
Tuy nhiên với một số Class thì catch được lỗi “java.io.NotSerializableException”, mình tìm hiểu thì thấy nó là do Object thuộc vào một Class không thể xếp thư tự.
Tuy nhiên mình không hiểu thế nào là lớp không thể xếp thứ tự, mong có ai giải thích giúp mình.

Để có thể sắp xếp các Object bạn cần implement Comparable và override method compareTo để sắp xếp các Object.

1 Like

Trong khi mình lưu Object, thì mình thấy các thuộc tính static không thể lưu được giá trị, mà chỉ lưu được giá trị của default.
Không biết có cách nào để lưu các thuộc tính static này không nhỉ.

Edit lại câu hỏi, post code lên luôn nhé bạn. Nói thế này thì cứ như thầy bói xem voi :v

  • Nguyên tắc Serialization: Phải để public, class, object, field phải là non-static và not read only

  • Vì sao phải thế, Serialization là lưu list các object ra file. Muốn lưu được thì objects phải được sắp xếp để xác định trình tự lưu xuống file. Cái này để làm gì, để khi em deSerialization thì cái trình tự đó sẽ được dùng lại để file có thể đọc ra.

  • Biến static không thể Serializable nhưng nó sẽ lấy giá trị default

  • Trường hợp của em có thể do em extend 1 lớp cha chưa đc Serializable

Trong trường hợp object có static fields muốn ghi ra không phải giá trị default

  • Có 2 cách . Cách 1 là em phải wrap nó bằng 1 cái biến khác không phải static. Cách 2 là modify lại cái method WriteObject

Ví dụ em muốn auto increasing ID của nhân viên khi write ra file không phải giá trị default

public class Person
{
    public static int _id = 0;
    public int _tempId; // Dùng biến này để tạo đối tượng
    public String name;

    public Peson( string name){
               ++_id;
               this._tempId = _id; 
               this.name = name;
    }
}
2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?