如何按值将可变对象传递给java

Ana*_*and 1 java

有什么方法可以将可变对象按值传递给java中的函数?

我真正想要的是将一个对象传递给一个方法,对其进行一些操作(更改它),然后再次仅使用该旧对象(而不是更改后的值)调用该方法。

这是一些示例:

    { MyObj obj = new MyObj(); obj.setName("name");

    append(obj); 
    System.out.println(obj.name);

    prepend(obj); 
    System.out.println(obj.name);

    }

    void append(MyObj obj){ obj.name+="1"; }

    void prepend(MyObj obj){ String a = "1"; obj.name=a+obj.name; }
Run Code Online (Sandbox Code Playgroud)

在此代码的末尾,我希望输出为:

name1
1name
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 5

Java 中根本不传递对象本身。曾经。

但是一切都是按值传递的 - 唯一可以传递的东西是原始值和引用。

不太清楚您要做什么 - 您是否希望有一个带有(例如)StringBuilder参数的方法,但没有对调用者可见的方法内的对象进行任何更改的想法?如果是这样,您基本上需要自己克隆对象。