我有一个名为Database的类,它被定义并在其中包含一些数据。
现在,我将该类的对象创建为
Database d1 = new Database();
现在,我对d1的那些数据值进行了更改,这样每当我创建数据库的另一个对象时,数据库d2',此对象都具有更新的数据值。这意味着,我们需要能够使用该类的对象来更改类定义。
这可以实现吗?
答案 0 :(得分:2)
我想你可能想在你的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。
答案 1 :(得分:0)
“这意味着,我们需要能够使用该类的对象来更改类定义。”
真的?您不要通过更改类定义来更改类实例的字段中的值。类定义是......源代码/编译的字节码。
但是如果你改变了类的定义,你就会发现该类的新版本无法反序列化使用旧版本的类序列化的实例。 (细节取决于变化的确切性质......)
更一般地说,Java序列化不是数据库的好选择:
但是以这些限制为模,它会起作用;即它是“可实现的”。
如果您真的在谈论如何更改内存中Database
对象的状态,或者如何从现有对象创建新副本,那么:
Database
类clone
方法,将Database
对象状态...复制到您需要的任何深度。所有非常容易实现的(简单的“Java 101”级别编程),虽然不一定是个好主意。