ぬるぽ

あなたとぬるぽ。

拡張forループ

int[] xs = null;
for (int x : xs) {
}

配列・リストが null なら拡張forループでぬるぽっ!

アンボクシング

Integer x = null;
int y = x;

プリミティブラッパーをプリミティブにアンボクシングするときにぬるぽっ!

普通に数字の足し算とかしててぬるぽが出たらこれを疑います。

throw

UnsupportedOperationException e = null;
throw e;

nullthrow したら投げられる例外はぬるぽっ!

String switch

String x = null;
switch (x) {
}

String のswitch文でぬるぽっ!

try with resources

try (AutoCloseable x = null) {
}

try with resourcesで AutoCloseablenull なら close するときにぬるぽっ!には ならない

close の前に null チェックするようにコンパイルされます。

コンストラクタ

new Hoge(a -> a.x.length());

何の変哲も無いコンストラクタですが、ぬるぽっ!になるケースがあります。

class Hoge {

    final String x;

    public Hoge(Consumer<Hoge> c) {
        c.accept(this);
        this.x = "hoge";
    }
}

フィールド x はfinalなのにぬるぽになるというアレです。 コンストラクタ終わってないインスタンスはメソッドに渡さないでおきましょー。

メソッド実行

Hoge x = null;
x.foobar();

ぬるぽっ! にはならないケースがあります

これ。

class Hoge {

    static void foobar() {
    }
}

まあ実際はこんなコードに出会うことは無いでしょう。

無いでしょう。

本日のコード