インターフェースに変換できる abstract クラスを報告します。

Java では複数クラスの継承はサポートされていませんが、クラスが複数のインターフェースを実装することは可能です。このため、クラスではなく、インターフェースを使用することをお勧めします。

(Object 以外の) スーパークラスを持たず、public static final フィールド、public abstract メソッド、および public 内部クラスのみを持つクラスはインターフェースに変換できます。

例:


abstract class Example {
    public static final int MY_CONST = 42;
    public abstract void foo();
}

class Inheritor extends Example {
    @Override
    public void foo() {
        System.out.println(MY_CONST);
    }
}

クイックフィックス適用後:


interface Example {
    int MY_CONST = 42;
    void foo();
}

class Inheritor implements Example {
    @Override
    public void foo() {
        System.out.println(MY_CONST);
    }
}

インスペクションの構成:

default メソッドに変換できる static メソッドと非 abstract メソッドを持つクラスのみを報告するには、「Java 8 の使用時に非抽象メソッドを含むクラスを報告する」オプションを使用します (言語レベルが 8 以降の場合のみ)。