Checkstyle Javaルール

CheckstyleのJavaルールについて1つずつまとめます

AvoidDoubleBraceInitialization

CheckStyle公式ドキュメント

検証環境

Checkstyleバージョン:10.3.3
Javaバージョン:17


チェック概要

チェック追加バージョン
Checkstyle 8.3

二重括弧初期化(DBI)を検出する。
DBI:最初の括弧で匿名クラスを生成し、次の括弧が初期化ブロックでオブジェクトを初期化する記述方法のこと。参考

DBIによる初期化(クラス本体にインスタンス初期化子を配置)はアンチパターンとみなされ、避けるべきとされている。
また、匿名クラスのインスタンスが外部で返され、他のオブジェクトがそのインスタンスを参照している場合、発見しにくいメモリリークにつながる可能性がある。
作成された匿名クラスは静的ではなく、外部クラスのインスタンスへの暗黙の参照を持つ。
チェックは、クラス本体内のコメントやセミコロンを無視する。

設定+チェック実行結果

設定ファイル記述方法

<module name="Checker">
    <module name="TreeWalker">
        <module name="AvoidDoubleBraceInitialization"/>
    </module>
</module>

チェック実行例

class MyClass {
    // OK
    List<Integer> list1 = new ArrayList<>();
    list1.add(1);
    
    // NG DBIは使用しない
    List<String> list2 = new ArrayList<>() {
        {
            add("aaa");
        }
    };
}