인터페이스로 변환할 수 있는 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 메서드 및 추상이 아닌 메서드를 포함하는 클래스만 보고하려면 Java 8을 사용할 때 추상이 아닌 메서드가 포함된 클래스 보고 옵션을 사용하세요 (언어 수준 8 이상에서만 적용 가능).