偶现在在学RMI这部分,书上说RMI中被用作方法的参数或返回值的远程对象是按引用传递的,就像是本地的一样。然而其他对象将被复制。这里我先说一下我的理解是:按引用(即按址)传递的话,那么它的值可以改变。但按值只是复制是不会改变的。接上面的书上后面又说:将数组作为参数传递给远程方法时,(从这里开始不明白)如果远程对象修改了该数组,本地的数组拷贝将不会改变。本地对象的情况并非如此,所有的本地对象都是按引用传递的。  而这里我不理解的是:既然数组是按引用(按址)传递的,如果远程数组被修改了 ,本地数组也应该改变啊,不解???
而据我一位朋友他说JAVA里都是传值的,而我的理解是对象是按引用传递的,而基本类型是按值传递的,这和他还有我书上的这段话不是矛盾嘛请问位大哥快说一下到底JAVA的传递是怎样的,还有我这书上的话又该怎样理解,是对还是错???急急急~~~~~~~~~~~~

解决方案 »

  1.   

    java中传递任何东西都是传值! 如果传入方法的是基本类型的东西,你就得到次基本类型的元素的一份拷贝,如果传递的是引用,就得到引用的拷贝!
      

  2.   

    java中传递任何东西都是传值的吗,怎么还会有引用呢?
      

  3.   

    Java以by value方式传递object reference的
      

  4.   

    呵呵,我也在看rmi,好象有stub和stem在中间吧,不是太明白,看书去了
      

  5.   

    哈,终于明白pass by value,by reference,pass by reference的意思了。也感谢楼上的这两位。
      

  6.   

    统一按值传递,其实只要理解了其中的java的传递本质,至于pass by value,pass by address都无所谓了!只是给个定义加强记忆罢了!
      

  7.   

    rmi中参数都是被复制的,就是远程、本地各一份,所以远程发生变化本地不会变,这和本地运行不同。如果要得到变化的结果,必须包装在返回值内返回,返回值的类型必须实现序列化接口。