我写一个程序需要将对象传入一个函数中进行处理,但所需要的只是该对象的数据,而不想改变这个对象。
但java中直接将对象作为参数传递是传递一个引用。有什么办法可以解决这个问题(除了显式地创建该对象的副本,这样太麻烦)?

解决方案 »

  1.   

    汗 .clone()还麻烦阿
    搬个凳子看高手解答
      

  2.   

    你既然是用了对象,只要你程序不改对象的数据不就完了?这个问题是基础,建议你看看THINKING IN JAVA 很清楚
      

  3.   

    假如在这样一个函数中:func(Obj obj){
        process1(obj);
        process2(obj);
        ...
        processn(obj);
    }
    n个处理都只是需要obj的副本,用clone的话,那要显式地clone n个副本,那岂不是太麻烦了?
      

  4.   

    我的具体问题是在一个递归之中,每一层中有一个处理是要改变对象数据的,但是上一层却需要的是没有改变的对象。
    我是初学java,还存在c++思维定势,因为同样的程序在c++中是不必考虑这个问题的,所以还请大虾解答。
      

  5.   


    那你肯是不是需要这样
    Object o=obj.clone();你是要产生N个副本阿
    那就用替换吧obj替换成obj.clone()
    天知道你要这么多单独副本干吗