Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将新对象指定给现有对象_Java_Assign - Fatal编程技术网

Java 如何将新对象指定给现有对象

Java 如何将新对象指定给现有对象,java,assign,Java,Assign,我在从文件中读取对象时遇到问题 大体上,我将eshop end call作为loadshop方法 MyShop eshop = new MyShop(); eshop.loadShop("eshop.txt"); 我还从文件中获取了商店物品 @Override public void loadShop(String filename) { try{ ObjectInput out = new ObjectInputStream(new FileInputStream

我在从文件中读取对象时遇到问题

大体上,我将eshop end call作为loadshop方法

MyShop eshop = new MyShop();
eshop.loadShop("eshop.txt");
我还从文件中获取了商店物品

@Override
public void loadShop(String filename) {

    try{
         ObjectInput out = new ObjectInputStream(new FileInputStream(filename));
         MyShop shop = (MyShop)out.readObject();
         out.close();

    } catch (Exception e) {
           e.printStackTrace();
    }
}
但我就是不知道如何将“商店”分配给“网上商店”


谢谢你的回答:-)(对不起我的英语)

只需编辑所有
eshop
的字段,就可以匹配
shop
只需重新设计,你不需要编写

MyShop eshop = new MyShop();
相反,写

MyShop eshop = MyShop.loadShop("eshop.txt");
并将
loadShop
方法设置为静态。并让它返回
MyShop
实例,如果它还没有这样做的话

如果这不是一个选项,那么最好通过黑客攻击获得该实例,而不是编写手动复制代码:

public class MyShop {
  private MyShop readShop;

  public MyShop getReadShop() { return readShop; }

  public void loadShop(String fName) {
    try {
       ObjectInput out = new ObjectInputStream(new FileInputStream(filename));
       this.readShop = (MyShop)out.readObject();
       out.close();

    } catch (Exception e) {
      throw new RuntimeException(e);
    }
}
你会像这样使用它

MyShop tempShop = new MyShop();
tempShop.loadShop();
MyShop eshop = tempShop.getReadShop();

在MyShop类中创建方法
loadShop
static并返回对象

public static MyShop loadShop(String something){
// do some thing

return (MyShop)out.readObject();     
}
在你的代码里

MyShop eshop = MyShop.loadShop("eshop.txt");

将您的
loadShop
方法设为
静态方法。使方法返回
MyShop
对象。在
MyShop
类中调用它。将返回值分配给
eshop
。例如:

public class MyShop {
    public static MyShop loadShop(String filename) {
        // ...
        MyShop shop = (MyShop)out.readObject();

        // ...
        return shop;
    }
}
在其中调用方法:

MyShop eshop = MyShop.loadShop("eshop.txt");

定义
分配
?你想在那项作业中做什么?你的意思是创建引用的副本?或者在.readObject()中创建实例的副本
。我想将shop的内容(从文件中获取)复制到已创建的实例(eshop)。您能否详细说明
out
变量?谢谢您的建议。这是一个很酷的解决方案。但不幸的是,我无法将loadShop方法更改为static和“Myshop”。这是学校的作业,我们不能更改它:-(如果方法是
void
,则必须是“public void loadShop(String filename)”(它不返回值)而不是
static
,那么你在方法内部要做的就是设置调用该方法的
MyShop
对象的成员变量。我该怎么做呢如果您添加到问题中的
loadShop
方法无法更改,那么这是一个绝对无用的方法。它实际上是一个不可操作的方法。当然可以更改,但我不能更改它的标题…:-)嗨,谢谢,但正如我上面所说的,我不能将其更改为静态并使其返回MyShop实例。。这是一个家庭作业(不幸的)…-(我是这样做的…-)非常非常感谢…-)