Is it Netbeans Bug or for Convenient?



我正在NetBeans上工作,并面临以下通知。

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

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();
        }
    }      

private final int n=3;

由于变量不是static,即在类级别。

NetBeans要求你把它放在构造函数中。这不是错误,只是指南。

Oracle java doc

public class BedAndBreakfast {
    // initialize to 10
    public static int capacity = 10;
    // initialize to false
    private boolean full = false;
}

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

相关内容

  • 没有找到相关文章

最新更新