Java中的更改返回对象

Java中的更改返回对象,java,reference,return-value,Java,Reference,Return Value,所以我有这个函数 public Foo findVariable(Foo input) 返回Foo类型的对象。我想获取该对象,然后在返回后在中修改它。我已经了解到Java中不能通过引用传递,因此是否可以: public void func1() { Foo o = new Foo(); Foo exp = findVariable(o); Foo newExp = new Foo(somethingDifferent); exp = newExp; } 我

所以我有这个函数

public Foo findVariable(Foo input)
返回Foo类型的对象。我想获取该对象,然后在返回后在中修改它。我已经了解到Java中不能通过引用传递,因此是否可以:

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

我想要的是findVariable返回的Foo对象被更改为对象newExp。很抱歉,如果这是不可能的,或者很简单,但我无法从我使用的搜索方法中找到它。谢谢

您可以在
func1
中对
findVariable
返回的
Foo
进行变异:

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;
}

foosHandedOutByMe
列表将不会有
newFoo
对象。

除了
不一定定义不同的东西之外,这或多或少会起作用,但我看不出有什么意义。最后,您只是用
newExp
覆盖
exp
。所以我只需要一个对象类型Foo的函数,它将对象更改为?我就是不能用“=”?
public void func1() {
    Foo o = new Foo();
    Foo exp = findVariable(o);
    Foo newFoo = new Foo(SomethingDifferent);
    exp = newFoo;
}