java - 如何将新对象分配给现有对象

标签 java assign

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

在 main 中,我让 eshop end 调用了一个方法 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();
    }
}

但我就是不知道如何将“shop”分配给“eshop”

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

最佳答案

重新设计即可,无需编写

MyShop eshop = new MyShop();

相反,写

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

并将 loadShop 方法设为静态。并使其返回 MyShop 实例(如果尚未执行此操作)。

如果这不是一个选项,那么通过 hack 获取该实例仍然比编写手动复制代码更好:

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();

关于java - 如何将新对象分配给现有对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13471681/

相关文章:

java - 使用wait和notify时避免死锁

java - 如何在更改某些单元格后使用 POI 读取 Excel 公式的结果

Java对象赋值行为不一致?

c++ - 由于类型不匹配,无法将一个指针分配给另一个指针,或者编译器这样说

java - 应用程序被删除时的消息

java - 如何使用java向程序ab添加功能?

java - 类型不匹配 : cannot convert from java. lang.String 到 String

将 double 添加到 long long 时出现 C++ 精度错误

c - 迭代复制多个字符

r - 附加函数名称,但参数较少