我想知道是否有一种简单的方法可以保存对象数组,而不必遍历并保存对象的各个方面。在我的示例中,我有两个数组,一个是单个数组,另一个是二维数组,其中包含引用自定义类的对象。每个对象都有特定的细节,如 x 和 y 整数、布尔值、字符串等。附加到它们(块[0].x,块[0].canWalk,块[0].name),我想知道是否有一种简单的方法可以将这些数组保存到文件中而不必使用for循环和保存每个部分。多维数组只是一个与第一个相同的已保存数组的数组 (savedBlock[0][0].x ...)
到目前为止我所拥有的(抛出 NotSerializableException):
public class Save
{
static File f;
static ObjectOutputStream os;
public static void openFile()
{
try
{
if(!new File("c:\\IDsGame").exists())
{
new File("c:\\IDsGame").mkdirs();
}
f = new File("c:\\IDsGame\\data.bin");
os = new ObjectOutputStream(new FileOutputStream(f));
writeFile();
}
catch(Exception e)
{
System.err.println("creating file");
}
}
public static void writeFile()
{
try
{
ArrayList<Object> map = new ArrayList<Object>(Arrays.asList(Map.block));
ArrayList<Object> savedMaps = new ArrayList<Object>(Arrays.asList(Map.savedMaps));
os.writeObject(map);
os.writeObject(savedMaps);
os.close();
}
catch (IOException e) {System.out.println(e);}
}
}
在我的地图类中,我初始化了块 (Blocks[]) 和 savedMaps(Blocks[][])。我的 Blocks 课程包含以下内容:
public class Blocks implements Serializable
{
public boolean canWalk, onTop, itemTaken;
public Image img = null, imgBack = null;
public final Image (a ton of different images)
public String name, item, message, title;
public char initMap, initEx, initIt;
public int x, y, height, width;
public Blocks()
{
canWalk = true;
onTop = false;
itemTaken = false;
img = null;
name = null;
item = null;
message = null;
x = 0;
y = 0;
height = 0;
width = 0;
}
}
显然,我在 Map 类中更改了某些部分不同的数组,我想知道是否有任何更简单的方法(根本)来保存块对象的数组。
感谢您抽出宝贵时间提供帮助,如果您需要更具体的信息,请告诉我。
ID