我正在研究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();
}
}
答案 0 :(得分:2)
private final int n=3;
由于变量不是静态,即在班级。
NetBeans要求您将其放在构造函数中。这不是一个错误,只是指导。
所述public class BedAndBreakfast {
// initialize to 10
public static int capacity = 10;
// initialize to false
private boolean full = false;
}
当初始化值可用时,这很有效 初始化可以放在一行上。但是,这种形式 由于其简单性,初始化具有局限性。如果 初始化需要一些逻辑(例如,错误处理或 for循环填充复杂数组),简单的赋值是不合适的。 实例变量可以在构造函数中初始化,其中包含错误 可以使用处理或其他逻辑。提供相同的功能 对于类变量,Java编程语言包括static 初始化块。