报告可以转换为接口的 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);
    }
}

配置检查:

使用 Java 8 时报告包含非 abstract 方法的类 选项可用于仅报告其 static 和非 abstract 方法可以转换为 default 方法的类(仅适用于语言级别为 8 或更高时)。