xin chào các đồng nghiệp thân yêu,Deserialize nhiều đối tượng Java
Tôi có một lớp Garden trong đó tôi sắp xếp và deserialize nhiều đối tượng lớp thực vật. Việc serializing đang làm việc nhưng việc deserializing không hoạt động nếu muốn gán nó cho biến gọi trong phương thức tĩnh mein. đang
public void searilizePlant(ArrayList<Plant> _plants) {
try {
FileOutputStream fileOut = new FileOutputStream(fileName);
ObjectOutputStream out = new ObjectOutputStream(fileOut);
for (int i = 0; i < _plants.size(); i++) {
out.writeObject(_plants.get(i));
}
out.close();
fileOut.close();
} catch (IOException ex) {
}
}
deserializing:
public ArrayList<Plant> desearilizePlant() {
ArrayList<Plant> plants = new ArrayList<Plant>();
Plant _plant = null;
try {
ObjectInputStream in = new ObjectInputStream(new FileInputStream(fileName));
Object object = in.readObject();
// _plant = (Plant) object;
// TODO: ITERATE OVER THE WHOLE STREAM
while (object != null) {
plants.add((Plant) object);
object = in.readObject();
}
in.close();
} catch (IOException i) {
return null;
} catch (ClassNotFoundException c) {
System.out.println("Employee class not found");
return null;
}
return plants;
}
đang cách gọi của tôi:
ArrayList<Plant> plants = new ArrayList<Plant>();
plants.add(plant1);
Garden garden = new Garden();
garden.searilizePlant(plants);
// THIS IS THE PROBLEM HERE
ArrayList<Plant> dp = new ArrayList<Plant>();
dp = garden.desearilizePlant();
chỉnh sửa
tôi nhận được một ngoại lệ con trỏ null
Các giải pháp của @NilsH đang làm việc tốt, cảm ơn!
Bạn có ý nghĩa gì bởi "nó không hoạt động"? Mã có biên dịch không? Bạn có gặp lỗi trong thời gian chạy không? Lỗi nào bạn nhận được chính xác? – Jesper
Xin chào, bạn đang gặp phải sự cố chính xác nào? Ý bạn là gì, nó "không hoạt động nếu muốn gán nó cho biến gọi trong phương thức tĩnh (chính)"? Trong trình gỡ rối, bạn có thấy mảng 'thực vật' được xây dựng chính xác không? – wmorrison365
Ngoài ra, bạn cần phải đặt các cuộc gọi đóng IO của bạn trong khối 'cuối cùng'. Và ngoài ra, bạn không cần 'ArrayList dp = new ArrayList ();'. Chỉ cần có 'ArrayList dp = garden.desearilizePlant();' khi mảng của bạn được tạo trong '# deserializePlant' –
wmorrison365