gpt4 book ai didi

java - 从其构造函数中保存的对象创建一个对象

转载 作者:行者123 更新时间:2023-11-30 02:34:40 24 4
gpt4 key购买 nike

需要明确的是:我有一个在运行时不断更改其值的对象,我想将创建和修改的对象保存在文件中。我找到了如何做到这一点,还找到了如何读回将其保存到另一个对象中的对象。但问题是:是否可以使用存储我要检索的对象的文件的唯一参数来调用我的对象的类构造函数?

NeuralNetwork(File fs){
ObjectInputStream ois;
changeFileSave(fs); //just sets the file as savefile for the future
try{
ois = new ObjectInputStream(new FileInputStream(_saveNet)); //_saveNet = fs
this = (NeuralNetwork) ois.readObject();
}
catch(Exception e){
//error message
}
}

它给了我一个关于“this =”的错误如果可能的话我该怎么做?

谢谢

最佳答案

关键字 this 是只读引用,即使在构造函数中也不能写入 this = 。而且,java中的构造函数不返回任何东西。

您必须获取已读取的对象,并将其属性一一映射(或使用反射)到您正在实例化的对象中拥有的属性。

但是,我认为通过将文件传递给构造函数并在其中执行 IO,您违反了关注点分离。通过以这种方式编写内容,您将永远将神经网络与文件绑定(bind)在一起,并带来一系列随之而来的问题,包括(不限于)您可能在某个时候将值存储在其他地方这一事实。

IMO 你最好使用 factory pattern构建您的对象并使您的 NeuralNetwork 对象成为普通对象。然后歧义就消失了,因为你的工厂方法可以简单地返回 (NeuralNetwork) ois.readObject();

关于java - 从其构造函数中保存的对象创建一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43414733/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com