未将字段声明为final时的Checkstyle错误

Cla*_*key 7 java error-handling checkstyle

我有以下用java编写的自定义异常:

import java.util.List;

public class PolicyException extends RuntimeException {

    private static final long serialVersionUID = -1760901980049241500L;
    private PolicyErrorCode code;
    private List<String> variables;

    public PolicyException(final PolicyErrorCode code, final List<String> variables) {
        this.code = code;
        this.variables = variables;
    }

    public PolicyErrorCode getCode() {
        return code;
    }

    public void setCode(final PolicyErrorCode code) {
        this.code = code;
    }

    public List<String> getVariables() {
        return variables;
    }

    public void setVariables(final List<String> variables) {
        this.variables = variables;
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到以下checkstyle错误:

字段'code'必须声明为final.

字段'变量'必须声明为final.

我相信抛出的checkstyle错误是FinalLocalVariableCheck.根据api:

确保永远不会更改其值的局部变量必须声明为final.

但是,显然有涉及变量的getter和setter,所以它们不能被声明为final.

这些错误不会发生在我的所有类中,只是自定义异常,由于扩展异常而可以序列化.

我在这里错过了什么吗?或者这是一个checkstyle错误?

我相信这个人有类似的问题,尽管在他的帖子中使用静态变量似乎有点混乱.

And*_*nek 9

问题确实在于您正在扩展Exception.有一个设计规则,异常对象应该是不可变的.应在构造函数中给出所有相关值.

checkstyle规则似乎被称为MutableException,并在此处记录.