Как понятно из названия, какой подход предпочесть?
Цель состоит в том, чтобы передать несколько параметров метода и получить что-то на выходе. Мы можем передать другой параметр, и метод обновит его, и теперь методу не нужно ничего возвращать, метод просто обновит выходную переменную, и это будет отражено вызывающей стороне.
Я просто пытаюсь сформулировать вопрос на этом примере.
List<String> result = new ArrayList<String>();
for (int i = 0; i < SOME_NUMBER_N; i++) {
fun(SOME_COLLECTION.get(i), result);
}
// in some other class
public void fun(String s, List<String> result) {
// populates result
}
против
List<String> result = new ArrayList<String>();
for (int i = 0; i < SOME_NUMBER_N; i++) {
List<String> subResult = fun(SOME_COLLECTION.get(i));
// merges subResult into result
mergeLists(result, subResult);
}
// in some other class
public List<String> fun(String s) {
List<String> res = new ArrayList<String>();
// some processing to populate res
return res;
}
Я понимаю, что один передает ссылку, а другой нет.
Какой из них мы должны предпочесть (в различных ситуациях )и почему?
Обновление:Учитывайте это только для изменяемых объектов.