Java 类变量上的Checkstyle

Java 类变量上的Checkstyle,java,eclipse,performance,checkstyle,Java,Eclipse,Performance,Checkstyle,Check样式表示,对于私有类变量,“必须声明为final” 在上面的例子中,它调用声明x为final,但是声明x为final会在构造函数中初始化它时出错。有什么问题吗?通过setter访问private和static字段进行修改是一种不好的方式。您必须执行以下操作之一: 1) 将字段x设为final并删除该字段的set方法 或者 2) 使字段x非静态(删除static关键字),则无需将其设置为final 但是,将x声明为final会在构造函数中初始化它时出错 要初始化静态字段,请使用 还有,为

Check样式表示,对于私有类变量,“必须声明为final”


在上面的例子中,它调用声明x为final,但是声明x为final会在构造函数中初始化它时出错。有什么问题吗?

通过setter访问
private
static
字段进行修改是一种不好的方式。您必须执行以下操作之一:

1) 将字段
x
设为final
并删除该字段的
set
方法

或者

2) 使字段
x
非静态(删除
static
关键字),则无需将其设置为
final

但是,将x声明为final会在构造函数中初始化它时出错

要初始化静态字段,请使用

还有,为什么它应该是
final
。。。原因是

  • 它是
    私有静态
    ,无法从外部访问
  • 如果不要求它是
    最终的
    ,则无需将其设置为
    静态的
  • 因此,要么删除
    static
    要么使用
    final private static

    现在,代码的另一部分:

    public void set(int x) {
        this.x = x;
    }
    
    问题:

  • 静态
    字段不应使用
    访问
  • 使用静态块初始化静态字段

  • 不能更改静态最终字段的值

    如果您真的需要x是静态的,那么将您的方法更改为

    public static void setX(int newX){
        [...]
    
    请记住,在静态方法中不能使用“this”


    这应该可以解决您的问题。

    引发警告的检查的名称是什么?解决方案会更有用…这只是4行代码…@obourgain:必须最终声明字段显示完整代码。为什么在实例方法中设置静态变量???
    public static void setX(int newX){
        [...]