地方在住IT系ニート

bkds

Java学習中のメモ

はじめに

Javaの学習中に発生した見逃してしまいそうなエラーについて簡単にメモしています。

ラッパークラスによるぬるぽ

Javaにはintなどのプリミティブ型とIntegerなどのラッパークラスがあります。
intは数値を保持することはできますが、nullを扱うことはできません。
Integerはオブジェクトのため、値とnullを扱うことができます。
intとIntegerの変換は自動的にされるため、テスト不足等でぬるぽが発生する場合があります。

下記はぬるぽを再現するプログラムです。
sumメソッドは、int型を扱う設計になっていますが、Integerを利用することで想定外にnullを利用されることがあります。
このプログラムでは、mainメソッドからsumメソッドを呼び出すタイミングでException in thread "main" java.lang.NullPointerExceptionが発生します。

public class Main {
    public static void main(String[] args) {
        Integer num1 = 1;
        Integer num2 = null;
        Integer ans = sum(num1, num2);
        System.out.println(ans);
    }

    public static int sum(int num1, int num2) {
        return num1 + num2;
    }
}
にほんブログ村 IT技術ブログ IT技術メモへPVアクセスランキング にほんブログ村