Language
record: 同じ構成要素なら equals で等しい
record は構成要素に基づく equals と hashCode を自動的に持ちます。
SourcePoint.java
Java 21
package examples.record;
public record Point(int x, int y) {}TestPointTest.java
Java 21
package examples.record;
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
class PointTest {
@Test
void 同じ値を持つrecordはequalsで等しくなる() {
var first = new Point(10, 20);
var second = new Point(10, 20);
assertEquals(first, second);
}
@Test
void 同じ値を持つrecordは同じhashCodeを持つ() {
var first = new Point(10, 20);
var second = new Point(10, 20);
assertEquals(first.hashCode(), second.hashCode());
}
}01Assertion
このテストで確認できること
- 同じ x と y を持つ record は equals で等しい
- 同じ構成要素なら hashCode も同じになる
record はデータを表すための型です。構成要素を基準に値として比較できます。
OBSERVED RESULT
expected: new Point(1, 2).equals(new Point(1, 2)) → true
actual: true