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

时间:2012-11-20 10:54:30

标签: java assign

我从文件中读取对象时出现问题..

在主要的,我让eshop结束了一个方法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”

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

4 个答案:

答案 0 :(得分:0)

只需修改所有eshop的字段,即可匹配shop

答案 1 :(得分:0)

重新设计,你不需要写

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

答案 2 :(得分:0)

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

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

return (MyShop)out.readObject();     
}

并在您的代码中

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

答案 3 :(得分:0)

loadShop方法设为static方法。使方法返回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");