![](/img/trans.png)
[英]How do I create some objects to store in an arrayList, which is a attribute of sub class, from a parent class in 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
包含Bar
, Bar
还必须实现Serializable
。 如果Bar
包含ArrayList<Baz>
,则Baz
必须可序列化。 ArrayList
已经可序列化,因此您不必担心。
请注意,对于可序列化的对象,您实际上不需要执行任何操作。 您只需要使用正确的界面对其进行标记。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.