2012-01-28 64 views
0

我正在處理一個任務,就像是一個擁有客戶和不同賬戶的簡單銀行。現在我必須開發我的任務,將我的客戶對象和帳戶對象存儲到文件中。我讀過一些關於它的內容,我將使用ObjectOutputStream和ObjectInputStream。因爲我有一個名爲customerList的所有客戶對象,並且屬於數組列表中的所有客戶對象,名爲accountsList,我想知道我是否應該並且可以保存孔數組列表,還是應該單獨保存所有對象?關於將對象保存到文件的指導原則

當我要加載的客戶對象,應該我把它們放在一個ArrayList再次能夠訪問他們爲我做了,直到知道嗎?尋找一個好的和簡單易懂的解決方案。請幫助!謝謝!

也許我只是做一個循環,並挑選在數組列表中的每個對象並將其保存爲對象。然後,當我要加載它們時,只需再次創建一個循環並加載它們並將它們添加到數組列表!

回答

1

可以保存(技術術語是序列化)的任何對象,只要它們實現java.io.SerializableArrayList實現Serializable所以只要你的客戶和賬戶對象實現也是實現Serializable接口就不會有問題了。串行化的與ArrayList的

實施例:http://www.javabeginner.com/uncategorized/java-serialization

注: 的更好的方式來存儲長期(和生產)數據是使用DBMS(RDBMS或NoSQL的DB)系統。

+0

OK,我不得不使用實現Serializable於從基類賬戶擴展子類(savingsAccount和CreditAccount)?或者僅僅是在帳戶類上做就足夠了? – 2012-01-28 09:45:13

+0

@ 3D-kreativ這是足夠指定它帳戶 – 2012-01-28 09:48:02

+0

好吧,我寫這樣的事情:outObjectStream.writeObject(nameOfArrayList)?那麼如果我加載它,我該如何用當前的數組列表替換已加載的內容以及它的內容? – 2012-01-28 10:01:10

1

它更容易儲存和裝載比單個對象的數組列表整。無論哪種方式,你需要確保你的對象是可序列化的。

在非作業設置,您或許會儲存在一個單獨的對象包括所有persistsnt應用程序狀態的帳戶列表。然後在啓動時讀取狀態,並在關機時保存。你應該確保你的類定義了一個串行版本的uid,這樣如果你改變它們的結構,你可以標記新版本與舊數據不兼容。

最後,銀行數據應該存儲在一個可靠的數據庫中。序列化機制用於短期存儲,如通信協議,或用於瀏覽器歷史記錄或用戶偏好等相對不重要的數據。將其用於長期存儲意味着您無法修改您使用的類別,否則可能會丟失數據。

+0

好吧,我寫這樣的東西:outObjectStream.writeObject(nameOfArrayList)?? – 2012-01-28 09:56:03

+0

數據庫比較好,但這不包括在本課程中。 – 2012-01-28 10:09:58

+0

是的,你就是這麼做的。你試過了嗎? – Joni 2012-01-28 10:16:22