我想知道是否有一種簡單的方法來保存對象的數組,而不必經過並保存對象的每個方面。在我的例子中,我有兩個數組,一個是單個數組,另一個是二維數組,其中包含引用自定義類的對象。每個對象都有特定的細節,如x和y整數,布爾值,字符串等。 (block [0] .x,block [0] .canWalk,block [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 [] [])。我的塊類持有這樣的:
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;
}
}
顯然我改變某些部分的地圖類中不同的陣列,我想知道是否有任何更簡單的方法(在所有)保存塊對象的數組。
感謝您抽出寶貴時間提供幫助,如果您需要更具體的信息,請告訴我。
I.D.
拋出相同的「NotSerializableException」 –
我敢肯定,如果你有一個可序列化的類,並且該類的對象數組也是可序列化的。確保你使用了正確的Blocks對象。或者,您可以在Blocks類中重寫writeObject和readObject以將字段添加到要序列化的數組中。 – Vulcan
@Vulcan你是對的(我測試它確保):數組是可序列化的,只要它們的所有元素都是可序列化的。 – Bohemian