Изменить возвращаемый объект в Java - PullRequest
0 голосов
/ 20 мая 2011

Так у меня есть функция

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

Я хочу, чтобы объект Foo, возвращаемый функцией findVariable, изменился на объект newExp. Извините, если это невозможно или просто, но я не могу найти его по методам поиска. Спасибо!

1 Ответ

2 голосов
/ 20 мая 2011

Вы можете изменить Foo, возвращаемый findVariable в 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.

...