在默认构造函数中初始化静态变量?

时间:2017-07-13 10:54:52

标签: java static final

class Temp{
       final static int x;
     public static void main(String[] args){
    }
}

编译错误:变量x未在默认构造函数中初始化

为什么它说默认构造函数没有初始化,因为变量是静态的? 这里默认构造函数的作用是什么?

2 个答案:

答案 0 :(得分:3)

你没错,错误信息不是很有帮助。必须在声明点或通过静态块初始化static final变量(约定通常在static之前放置final):

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

我不能说任何相关的错误报告,所以如果你愿意,你可以提交一个。

答案 1 :(得分:1)

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