2017-07-13 14 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

そうですが、そのエラーメッセージはあまり役に立ちません。場合は1を提出することができるように

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

は、私はすべての関連バグレポートを言うことができない:static final変数宣言の時点でまたは静的ブロックのいずれかを介して初期化されなければならない(規則はfinalstaticを置くことが一般的です)あなたは欲しい。

+0

Thanx ...最終的な非静的変数も試しました...同じエラーが発生します。最終的な非静的な場合...エラーは許容可能です –

関連する問題