Numbers
unboxing: nullのIntegerを計算するとNullPointerExceptionになる
Integerをintとして使う式では自動unboxingが起き、nullなら演算前にNullPointerExceptionになります。
SourceNullableIntegers.java
Java 21
package examples.boxing;
public final class NullableIntegers {
private NullableIntegers() {}
public static int increment(Integer value) {
return value + 1;
}
}TestNullableIntegersTest.java
Java 21
package examples.boxing;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import org.junit.jupiter.api.Test;
class NullableIntegersTest {
@Test
void nullのIntegerを計算するとunboxing時にNullPointerExceptionになる() {
assertThrows(NullPointerException.class, () -> NullableIntegers.increment(null));
}
@Test
void 値があるIntegerはunboxingして計算できる() {
assertEquals(2, NullableIntegers.increment(1));
}
}01Assertion
このテストで確認できること
- 値があるIntegerはintとして計算できる
- nullのIntegerはunboxing時にNullPointerExceptionになる
ラッパー型のnull許容性はprimitiveへ変換した時点で失われます。DBやJSONからのnullable値を計算へ渡す前に、欠損の扱いを決めます。
OBSERVED RESULT
expected exception: null Integer → NullPointerException
actual: NullPointerException