2017-07-13 101 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 ...我嘗試了最終的非靜態變量也...它給出了同樣的錯誤。如果最終是非靜態的......錯誤是可以接受的 –

相關問題