【问题标题】:Checkstyle on class variable类变量的检查样式
【发布时间】:2013-03-05 07:37:46
【问题描述】:

检查样式表示对于私有类变量“必须声明为 final”。

class Test {
    private int x=1;

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

在上述情况下,它调用将 x 声明为 final,但是将 x 声明为 final 会在构造函数中初始化它时出错。有什么收获?

【问题讨论】:

  • 引发警告的支票名称是什么?
  • 一个解决方案会更有帮助....这只是 4 行代码...
  • @obourgain: 字段必须声明为最终字段
  • 向我们展示您的完整代码。
  • 为什么要在实例方法中设置静态变量???

标签: java eclipse performance checkstyle


【解决方案1】:

privatestatic 字段可以通过setter 进行修改是一种不好的风格。您必须执行以下操作之一:

1) 创建字段 x final 并删除 set 方法。

要么

2) 将字段x 设为非静态(去掉static 关键字),则不需要设为final

【讨论】:

    【解决方案2】:

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

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

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

    1. 它是private static,无法从外部访问。
    2. 如果不需要是final,那么就不需要static

    所以,要么删除static,要么使用final private static

    现在,你的另一部分代码:

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

    问题:

    1. 不应使用 this 访问 static 字段。
    2. 使用静态块初始化静态字段。

    【讨论】:

      【解决方案3】:

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

      如果您确实需要 x 是静态的,请将您的方法更改为

      public static void setX(int newX){
          [...]
      

      请记住,在静态方法中不能使用“this”。

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

      【讨论】:

        猜你喜欢
        • 2021-01-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-24
        • 1970-01-01
        • 2020-10-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多