【发布时间】:2016-06-08 19:19:06
【问题描述】:
我遇到了这段(对我来说很奇怪)代码。实际上,我从未见过它被使用过,我自己也从未使用过它,所以这很令人困惑......这与
- 此处使用 hashmap 作为示例,但其他对象的行为相同
public static void fillData(HashMap<Object, Object> dataMap){
dataMap.put("key","value");
}
现在这很令人困惑,因为我了解到你这样做的方式更像这样
public static HashMap<Object, Object> fillData(){
HashMap<Object, Object> dataMap = new HashMap<>();
dataMap.put("key","value");
return dataMap;
}
现在有没有时候我应该使用一种方式或另一种方式?我对编程还是很陌生,但我还没有发现很多关于这种结构的东西。
我也进行了实验,发现这只适用于对象,而不适用于原语......
【问题讨论】:
-
一般来说你应该尽量避免修改参数,但在某些情况下这是不可能的。
-
这个问题和答案也可能会有所帮助:stackoverflow.com/questions/7931523/…
-
顺便说一句:原语是按值传递的,因此您仅在对调用方没有影响的方法中操作副本。