所以我遇到了一些我认为看起来有点奇怪的代码。想看看大家对此有何看法
public class Test {
public static void main(String[] args) {
HashMap m = new HashMap();
Test2 t2 = new Test2();
t2.fill(m);
}
}
public class Test2 {
public void fill(HashMap m) {
m.put(new Integer(0), new Integer(0));
}
}
那么这段代码可以吗还是应该用其他方式完成?
谢谢
最佳答案
这很好,因为 java 中的对象是通过引用传递的。如果你试图在一个方法中直接赋值给 m,那是错误的:
m = new HashMap();
但是您可以使用传递的引用来修改作为参数传递的对象,就像您的示例代码一样。
将其视为将对象的位置传递给函数。您可以使用此位置信息来摆弄它。但由于位置只是一个值,因此分配给位置 (m
) 不会对调用函数的位置的 m
产生影响。这就是为什么文章说参数是按值传递的。
关于java - 将 map 传递给另一个要在 java 中修改的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13871233/