java – 传递参数而不是从函数返回它
发布时间:2020-05-24 19:35:36 所属栏目:Java 来源:互联网
导读:从标题中可以清楚地看出我们应该采用哪种方法? 意图是传递一些方法参数并获得输出.我们可以传递另一个参数,方法会更新它,方法现在不需要返回任何东西,方法只会更新输出变量,它会反映给调用者. 我只想通过这个例子来构建问题. ListString result = new ArrayL
|
从标题中可以清楚地看出我们应该采用哪种方法? 意图是传递一些方法参数并获得输出.我们可以传递另一个参数,方法会更新它,方法现在不需要返回任何东西,方法只会更新输出变量,它会反映给调用者. 我只想通过这个例子来构建问题. 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;
}
我明白一个人通过了参考而另一个没有. 我们应该选择哪一种(在不同情况下)以及为什么? 更新:仅考虑可变对象. 解决方法从函数返回值通常是编写代码的更简洁的方法.由于创建和销毁指针的性质,传递值并修改它是更多的C/C++样式.开发人员通常不希望通过传递函数来修改它们的值,除非函数明确声明它修改了值(我们经常浏览文档). 但也有例外. 考虑一下Collections.sort的例子,它实际上确实做了一个列表的排序.想象一下包含100万件物品的清单,你正在对它进行分类.也许你不想创建另外有100万条目的第二个列表(即使这些条目指向原始条目). 支持使用不可变对象也是一种好习惯.不可变对象在开发的大多数方面(例如线程)导致的问题要少得多.因此,通过返回一个新对象,您不会强制参数变为可变. 重要的是要明确你在方法中的意图.我的建议是尽可能避免修改参数,因为它不是Java中最典型的行为. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- 经过一段时间的繁重负载后,Java / jetty不响应连
- ScheduledExecutorService任务定时代码示例
- java servlet手机app访问接口(二)短信验证
- java – Spring throwing HttpMediaTypeNotAccep
- Android客户端采用Http 协议Post方式请求与服务端
- java – 如何访问传递给CompletableFuture allOf
- java – Apache Hadoop setXIncludeAware Unsupp
- java随机生成时间字符串的方法
- java – 为什么在这种情况下不能引用lambda内的变
- java – Groovy闭包可以扩展抽象类
热点阅读
