我有一個名爲數據庫的類已定義,並在其字段中包含一些數據。我可以使用序列化來實現嗎?
現在,我創建一個類的對象作爲
Database d1 = new Database();
現在,我改動了D1的那些數據值,這樣,每當我創建數據庫的另一個目的是說「數據庫D2」,這個對象有數據的更新值。這意味着,我們需要能夠使用該類的對象來更改類定義。
這可以實現嗎?
我有一個名爲數據庫的類已定義,並在其字段中包含一些數據。我可以使用序列化來實現嗎?
現在,我創建一個類的對象作爲
Database d1 = new Database();
現在,我改動了D1的那些數據值,這樣,每當我創建數據庫的另一個目的是說「數據庫D2」,這個對象有數據的更新值。這意味着,我們需要能夠使用該類的對象來更改類定義。
這可以實現嗎?
我想你可能想要實現在Java代碼中一個copy constructor
,你可以這樣做:
class Database{
Filed field; // some field
Database(){
}
Database(Database db){ // copy constructor
this.field = db.field.clone();
}
}
Database d2 = new Database(d1)
然後D2將不得不D1所有提起更新。
「這意味着,我們需要能夠使用該類的對象來更改類定義。」
真的嗎?您不要通過更改類定義來更改類實例字段中的值。類定義是...源代碼/編譯的字節碼。
但是,如果您改變了類定義,您很可能會發現新版本的類無法反序列化使用舊版本類序列化的實例。 (詳情取決於這些變化的確切性質...)
更一般地,Java序列化是不是數據庫的一個很好的選擇:
但模了這些限制,它會工作;即它是「可實現的」。
如果你是真的在談論如何改變你的內存Database
對象的狀態,或如何從現有的出來,然後創建一個新的副本:
Database
類中的setter和/或其他方法,clone
方法,該方法將Database
對象狀態...複製到所需的任何深度。所有非常容易實現的(簡單的「Java 101」級別編程),但不一定是個好主意。
問題的標題('Serialization')是一種從/ Stream(s)讀/寫Object的機制。你的問題的主體似乎是關於實施[淺拷貝](http://stackoverflow.com/q/184710/2970947)。你想做什麼? –
我想使用Static關鍵字? –