它是Netbeans Bug还是方便的?

时间:2015-09-21 14:47:57

标签: java netbeans

我正在研究NetBeans并面临以下通知。

1)当我声明并初始化private final int a=3; Netbeans通知我将Initialize移动到构造函数时为什么?

2)当我声明并初始化private int a=3;时,Netbeans会通知我field can be final,直到我在构造函数中初始化它为止。甚至在Instance Members Block中初始化导致同样的问题。

任何帮助?为什么我收到这些通知?

1)代码

public class Testing 
{
    private final int a=3;
    static{
        System.out.println("Static Block");
    }
    Testing(){
        System.out.println("Constructor");
    }
    public static void main( String args[])    
    {
       Testing obj=new Testing();
    }
}    

2)代码

public class Testing 
    {
        private int a;
        static{
            System.out.println("Static Block");
        }
        {
            this.a=0;
            System.out.println("Instance Member Initializer");
        }
        Testing(){
            this.a = 3; // when I remove this I got 1) Problem
            System.out.println("Constructor");
        }
        public static void main( String args[])    
        {
           Testing obj=new Testing();
        }
    }      

1 个答案:

答案 0 :(得分:2)

private final int n=3;

由于变量不是静态,即在班级。

NetBeans要求您将其放在构造函数中。这不是一个错误,只是指导。

Oracle java doc

所述
public class BedAndBreakfast {

    // initialize to 10
    public static int capacity = 10;

    // initialize to false
    private boolean full = false;
}
  

当初始化值可用时,这很有效   初始化可以放在一行上。但是,这种形式   由于其简单性,初始化具有局限性。如果   初始化需要一些逻辑(例如,错误处理或   for循环填充复杂数组),简单的赋值是不合适的。   实例变量可以在构造函数中初始化,其中包含错误   可以使用处理或其他逻辑。提供相同的功能   对于类变量,Java编程语言包括static   初始化块。