gpt4 book ai didi

java - 无法序列化 ArrayList

转载 作者:行者123 更新时间:2023-12-01 07:14:53 25 4
gpt4 key购买 nike

这是 Serializing a vector 的后续内容

我正在尝试为我正在开发的游戏实现加载和保存。

我想保存一个 Maze,其中包含 EntityArrayList 等属性。

实体是龙、英雄和元素的父类(super class)。所有这三种类型都可以同时包含在 vector 中。

使用“自动”序列化机制(将 implements Serialized 添加到 Maze)可以保存除 ArrayList 之外的所有属性。

为什么会发生这种情况?

为了完整起见,我的代码如下。

package logic;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public final class LoadAndSave {
public static final transient boolean available = false;

public static final boolean serialize(Object obj) {

// Write to disk with FileOutputStream
FileOutputStream saveFile;
try {
saveFile = new FileOutputStream("game.sav");
} catch (FileNotFoundException e) {
return false;
}

// Write object with ObjectOutputStream
ObjectOutputStream objOut;
try {
objOut = new ObjectOutputStream(saveFile);
} catch (IOException e) {
//
return false;
}

// Write object out to disk
try {
objOut.writeObject(obj);
} catch (IOException e) {
return false;
}

return true;
}

public static final Object load() {
FileInputStream fileIn;
try {
fileIn = new FileInputStream("game.sav");
} catch (FileNotFoundException e1) {
return null;
}

// Read object using ObjectInputStream
ObjectInputStream objIn;
try {
objIn = new ObjectInputStream(fileIn);
} catch (IOException e) {
return null;
}

// Read an object
Object obj;
try {
obj = objIn.readObject();
} catch (IOException e) {
return null;
} catch (ClassNotFoundException e) {
return null;
}

return obj;
}

}

最佳答案

Entity 也可以序列化吗? (您提到只有 Maze 是可序列化的)。

并确保列表未定义为 transient 静态,否则序列化机制将跳过它。

关于java - 无法序列化 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5367916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com