将地图传递给另一个要在java中修改的方法

use*_*409 4 java arguments

所以我遇到了一些我认为看起来很奇怪的代码.想看看你对此有何看法

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));
    }

}
Run Code Online (Sandbox Code Playgroud)

那么这段代码是好还是应该以另一种方式完成?

谢谢

per*_*eal 7

这非常好,因为java中的对象是通过引用传递的.如果您尝试直接在方法中分配给m,那就错了:

m = new HashMap();
Run Code Online (Sandbox Code Playgroud)

但是您可以使用传递的引用来修改作为参数传递的对象,就像示例代码一样.

可以把它想象为将对象的位置传递给函数.您可以使用此位置信息来摆弄它.但由于该位置只是一个值,因此分配location(m)对m您调用该函数的位置没有影响.这就是为什么文章说这个论点是通过价值传递的.

  • 根据这篇文章,Java 参数是按值传递的 http://javadude.com/articles/passbyvalue.htm (2认同)