用Java更改返回的对象

时间:2011-05-20 00:06:31

标签: java reference return-value

所以我有功能

public Foo findVariable(Foo input)

返回Foo类型的对象。我想获取该对象,然后在返回后在findVariable中修改它。我已经读过你不能通过Java引用传递,所以它可以有:

  public void func1() {
    Foo o = new Foo();
    Foo exp = findVariable(o);
    Foo newExp = new Foo(somethingDifferent);
    exp = newExp;
}

我想要的是将findVariable返回的Foo对象更改为对象newExp。对不起,如果这是不可能的,或者很简单,但我找不到我用过的搜索方法。谢谢!

1 个答案:

答案 0 :(得分:2)

您可以改变FoofindVariable返回的func1

public void func1() {
    Foo o = new Foo();
    Foo exp = findVariable(o);
    exp.setSomething(different);
}

但如果你这样做:

List<Foo> foosHandedOutByMe = ...
public Foo findVariable(Foo foo) {
    Foo f = new Foo();
    foosHandedOutByMe.add(f);
    return f;
}

然后致电:

public void func1() {
    Foo o = new Foo();
    Foo exp = findVariable(o);
    Foo newFoo = new Foo(SomethingDifferent);
    exp = newFoo;
}

foosHandedOutByMe列表中没有newFoo对象。