首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建文件以存储来自ArrayList Java的对象

如何创建文件以存储来自ArrayList Java的对象
EN

Stack Overflow用户
提问于 2014-03-04 16:32:11
回答 1查看 105关注 0票数 0

我正在制作一个游戏,基本上是2D的“我的世界”,我正在创建一个新的对象,每个块都有3个参数(X,Y,Object )。游戏本身工作,但我不能保存它,因为它崩溃,每次我使用保存功能。(java.io.NotSerializableException) -为什么不呢?

这里我有数组列表,它存储对象:

代码语言:javascript
复制
    public static ArrayList<Objects> list = new ArrayList<Objects>();

下面是我的类名为Objects:

代码语言:javascript
复制
public class Objects{

public int ObjectX;
public int ObjectY;
public int ObjectName;
public int ObjectSize = Game.ObjectSize;

public Objects(int x, int y, int n) {
    ObjectX=x;
    ObjectY=y;
    ObjectName=n;
}

public void render(Graphics g){ 
    if(ObjectX*ObjectSize-Game.x+ObjectSize > 0 && ObjectX*ObjectSize-Game.x <     Game.w && ObjectY*ObjectSize-Game.y+ObjectSize > 0 && ObjectY*ObjectSize-Game.y < Game.h){       
        if(ObjectName!=1){  
    g.setColor(Color.BLACK);
    g.fillRect(ObjectX*ObjectSize-Game.x, ObjectY*ObjectSize-Game.y,ObjectSize,ObjectSize);
        }
        if(ObjectName==2){
    g.setColor(Color.GREEN);
    g.fillRect(ObjectX*ObjectSize +1-Game.x, ObjectY*ObjectSize +1-Game.y,ObjectSize-2,ObjectSize-2);
        }
        if(ObjectName==3){
    g.setColor(new Color(139,69,19));
    g.fillRect(ObjectX*ObjectSize +1-Game.x, ObjectY*ObjectSize +1-Game.y,ObjectSize-2,ObjectSize-2);
        }
    }
}

public void tick(){

}
}

所以我试了几样东西,但是我不能让它起作用?我真的需要一些帮助。

代码语言:javascript
复制
//write
public void save(String filename) throws FileNotFoundException {
    doing = "Saving...";
    try{
        File file = new File(filename);
        if(!file.exists()) {
            file.createNewFile();
        } 
FileOutputStream fos = new FileOutputStream(file);
ObjectOutputStream oos = new ObjectOutputStream(fos);

oos.writeObject(list);
oos.close();
    }catch(IOException e){
        e.printStackTrace();
    }
    SAVE=false;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-04 16:43:50

假设我想将Foo的一个实例写入一个文件。我需要让Foo实现Serializable,如下所示:

代码语言:javascript
复制
public class Foo implements Serializable {}

如果Foo是可序列化的,那么Foo中的每个对象也必须是可序列化的。如果Foo包含BarBar也必须实现Serializable。如果Bar包含ArrayList<Baz>,则Baz必须是可序列化的。ArrayList已经可以序列化了,所以您不必担心它。

注意,实际上不必为对象实现任何可序列化的东西。您只需用适当的界面来标记它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22177570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档