【发布时间】:2012-05-11 08:06:54
【问题描述】:
从标题中可以清楚地看出我们应该更喜欢哪种方法?
意图是传递一些方法参数并得到一些东西作为输出。我们可以传递另一个参数,方法会更新它,方法现在不需要返回任何东西,方法只会更新输出变量,它会反映给调用者。
我只是想通过这个例子来阐述问题。
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;
}
我知道一个通过引用而另一个不通过。
我们应该选择哪一个(在不同的情况下),为什么?
更新:只考虑可变对象。
【问题讨论】:
-
我不确定你在问什么。您是否问在什么情况下应该将变量传递给方法,而不是在方法中使用 getArg() 或任何可能调用的方法获取它?
-
不,你误会了,或者我无法传达。我在问:我们应该将变量作为引用传递给函数还是从函数中返回?在什么情况下我们应该使用其中任何一个?希望,我很清楚!
标签: java parameter-passing pass-by-reference