Javaの可変引数の値を変更の方法
Java のメソッド引数は、参照渡しではなく、値渡しされます。つまり、メソッド内で引数が変更されても、メソッド外の変数には影響しません。
メソッド内から渡された引数の値を変更したい場合、以下を使用します。
- 変更可能なオブジェクトをパラメータとして渡す。変更の必要な値をオブジェクトに収め、そのオブジェクトをパラメータとして渡す。メソッド内部では、オブジェクトのプロパティを修正することでパラメータの値を変更できる。
- publicクラスValueWrapper {
プライベートint value;public int getValue() {
return value;
}public void setValue(int value) {
this.value = value;
}
}public void modifyValue(ValueWrapper wrapper) {
wrapper.setValue(10);
}public static void main(String[] args) {
ValueWrapper wrapper = new ValueWrapper();
wrapper.setValue(5);modifyValue(wrapper);
System.out.println(wrapper.getValue()); // 10を出力
} - メソッドの戻り値の型を、変更したい値の型にして、返り値として変更した値をreturn文で返す。メソッド呼び出し元で、戻り値を元の変数に代入する。
- public int modifyValue(int value) {
value = 10;
return value;
}public static void main(String[] args) {
int value = 5;value = modifyValue(value);
System.out.println(value); // 10と表示される
}
実は、引数に渡された値を直接書き換えることはできませんが、オブジェクトのプロパティを書き換えるか、変更後の値を返すことで同じ効果をもたらすことができます。