2017-07-13 98 views
0
class Temp{ 
     final static int x; 
    public static void main(String[] args){ 
    } 
} 

编译错误:变量x在默认构造方法做默认构造函数初始化的静态变量?

为什么自变量是静态的它说不是在默认的构造函数初始化未初始化? 默认构造函数在这里有什么作用?

+2

这是因为变量是'final',你需要在其声明的时刻进行初始化。 –

+2

或在一个静态初始化块 – Flown

回答

1

它不仅是静态的......它是最终的静态的:) 静态最终成员应该初始化内联或静态块。

+0

Thanx ...但我的问题是,这里的默认构造函数是什么 –

+0

@RahulGupta它是最肯定的**不** **角色的_any_构造函数,默认或其他,以初始化'静态“字段,并在这一点上,该消息是误导。 –

+0

@KevinAnderson thanx –

3

你说得对,该错误信息是不是非常有帮助。一个static final变量(一般惯例是把staticfinal前)必须初始化或者在申报点或通过一个静态块:

final static int x = 0; 
//or 
final static int y; 
static { 
    y = 0; 
} 

我不能说任何相关的bug报告,所以你可以,如果提交一个你要。

+0

Thanx ...我尝试了最终的非静态变量也...它给出了同样的错误。如果最终是非静态的......错误是可以接受的 –

相关问题