Language
enum: 定数は同じインスタンスとして比較できる
enumの各定数は一意なインスタンスであり、同じ定数かの比較には==を使えます。
SourceBuildStatus.java
Java 21
package examples.enumtype;
public enum BuildStatus {
READY,
FAILED
}TestBuildStatusTest.java
Java 21
package examples.enumtype;
import static org.junit.jupiter.api.Assertions.assertSame;
import static org.junit.jupiter.api.Assertions.assertTrue;
import org.junit.jupiter.api.Test;
class BuildStatusTest {
@Test
void valueOfで得たenum定数は宣言済み定数と同じインスタンスである() {
assertSame(BuildStatus.READY, BuildStatus.valueOf("READY"));
assertTrue(BuildStatus.READY == BuildStatus.valueOf("READY"));
}
}01Assertion
このテストで確認できること
- valueOfで取得した定数は宣言済みの定数と同一参照になる
- enum同士を==で比較できる
enumは値が等しいかではなく、定数そのものが一意です。nullを許容する比較でも==は安全で、意図を明確にできます。
OBSERVED RESULT
expected: READY == valueOf(READY) → true
actual: true