从标题中可以清楚地看出我们应该采用哪种方法?
意图是传递一些方法参数并获得输出.我们可以传递另一个参数,方法会更新它,方法现在不需要返回任何东西,方法只会更新输出变量,它会反映给调用者.
我只想通过这个例子来构建问题.
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; }
我明白一个人通过了参考而另一个没有.
我们应该选择哪一种(在不同情况下)以及为什么?
更新:仅考虑可变对象.