# 方法寫入外部物件

在 Java 中，方法参数的传递方式是按值传递，也就是说，方法内部对参数的修改不会影响到原始变量的值。因此，在 Java 中无法直接通过方法回写外部变量。

不过，可以通过一些技巧来实现类似于按引用传递的效果。其中一种方法是将要回写的变量封装成一个对象，并将该对象作为方法的参数传递进去。这样，方法内部对该对象的修改会影响到原始变量的值。

例如，假设有一个要回写的变量 `int x`，可以将其封装成一个对象 `IntHolder`，该对象包含一个整数属性 `value`，并提供一个方法 `getValue()` 和 `setValue(int)` 分别用于获取和设置该属性的值。然后，在调用方法时，将一个 `IntHolder` 对象作为参数传递进去。方法内部就可以通过 `IntHolder` 对象来修改原始变量的值。

下面是一个示例代码：

```Java
public class IntHolder {
    private int value;

    public IntHolder(int value) {
        this.value = value;
    }

    public int getValue() {
        return value;
    }

    public void setValue(int value) {
        this.value = value;
    }
}

public class Main {
    public static void main(String[] args) {
        IntHolder xHolder = new IntHolder(10);
        System.out.println("Before method call: " + xHolder.getValue());

        // 调用方法，将 xHolder 作为参数传递进去
        modifyIntHolder(xHolder);

        System.out.println("After method call: " + xHolder.getValue());
    }

    public static void modifyIntHolder(IntHolder holder) {
        // 修改 holder 的值，会影响到 xHolder
        holder.setValue(20);
    }
}

```

在上面的示例代码中，`IntHolder` 对象 `xHolder` 的值被初始化为 `10`，然后被传递给 `modifyIntHolder` 方法。在方法内部，`holder` 对象的值被修改为 `20`。由于 `xHolder` 和 `holder` 引用的是同一个对象，因此 `xHolder` 的值也被修改为 `20`。最终输出结果为：

```
Before method call: 10
After method call: 20

```