Language
varargs: 配列を渡すと同じ配列を受け取る
既存配列をvarargs引数へ渡すと、メソッドはコピーではなくその配列を操作します。
SourceVarargsArrays.java
Java 21
package examples.varargs;
public final class VarargsArrays {
private VarargsArrays() {}
public static void replaceFirst(String replacement, String... values) {
values[0] = replacement;
}
}TestVarargsArraysTest.java
Java 21
package examples.varargs;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
import org.junit.jupiter.api.Test;
class VarargsArraysTest {
@Test
void 配列を渡すvarargsは配列をコピーせず同じ配列を受け取る() {
var values = new String[] {"before", "second"};
VarargsArrays.replaceFirst("after", values);
assertArrayEquals(new String[] {"after", "second"}, values);
}
}01Assertion
このテストで確認できること
- String配列をvarargsへ渡す
- メソッド内の要素置換が呼び出し元の配列へ反映される
varargsは呼び出し構文を簡潔にしますが、実体は配列です。可変な配列を受け取るAPIでは、必要ならコピーして所有権を切ります。
OBSERVED RESULT
expected: [after, second]
actual: [after, second]