簡體   English   中英

如何創建文件以存儲ArrayList Java中的對象

[英]How to create a file to store an Objects from an ArrayList Java

我正在制作一個基本上是2D我的世界的游戲,並且正在為每個塊(X,Y,對象類型)創建一個具有3個參數的新對象。 游戲本身可以運行,但是我無法保存它,因為每次我使用保存功能時它都會崩潰。 (java.io.NotSerializableException)-為什么不呢???
因此,這里有我的數組列表,該列表存儲對象:

    public static ArrayList<Objects> list = new ArrayList<Objects>();

這是我的類,稱為對象:

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(){

}
}

所以我嘗試了一些事情,但是我無法使它正常工作??? 我真的需要一些幫助。

//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;
}

假設我想將Foo的實例寫入文件。 我需要讓Foo實現Serializable ,如下所示:

public class Foo implements Serializable {}

如果Foo可序列化,則Foo內部的每個對象也必須都是可序列化的。 如果Foo包含BarBar還必須實現Serializable 如果Bar包含ArrayList<Baz> ,則Baz必須可序列化。 ArrayList已經可序列化,因此您不必擔心。

請注意,對於可序列化的對象,您實際上不需要執行任何操作。 您只需要使用正確的界面對其進行標記。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM