PMD错误

Overridable method ‘XXX’ called during object construction

样例

public class Test {
    public int a;

    public Test() {
        test();
    }

    public void test() {
        a = 10;
    }
}

报错原因

不要在构造方法里调用可被重写的方法,这会导致构造方法的行为不定。虽然在编译期时没有异常,但是在运行期时可能发生异常。

详细的分析可以参考Java中不要在父类的构造方法中调用会被子类重写的方法

解决方法

有两个方法:
1.将该方法加上final

public class Test {
    public int a;

    public Test() {
        test();
    }

    public final void test() {
        a = 10;
    }

2.将该方法改为private

public class Test {
    public int a;

    public Test() {
        test();
    }

    private void test() {
        a = 10;
    }

更多推荐

PMD笔记-Overridable method 'XXX' called during object construction