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.
Lỗi khi đọc ghi Object trong Java
Để 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.
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;
}
}