問題があります。いくつかのコードスニペットを試しているときに、コードに出くわしました。
class O
{
final int i;
O()
{
i=10;
}
O(int j)// error here as THE BLANK FINAL FIELD i IS NOT INITIALIZED
{
j=20;
System.out.println(j);
}
}
class Manager3
{
public static void main(final String[] args)
{
O n1=new O();
//O n2=new O(10);
//n1.i=20;
//System.out.println(j1.i);
}
}
しかし、パラメーターを使用してコンストラクターにコメントを付けても、エラーは発生しません。
私の質問は、コンストラクターをコードに入れたときにこのコンパイル時エラーが発生する理由と、パラメーター化されたコンストラクターを削除したときにエラーが発生しない理由です。
最終変数を初期化する必要があることはわかっていますが、コンストラクターで初期化するため、このコードを記述した場合:-
class O
{
final int i;
O()
{
i=10;
}
}
class Manager3
{
public static void main(final String[] args)
{
O n1=new O();
}
}
これはすべて正常に機能しており、コードはコンパイルされています。
私の質問は、別のコンストラクターを導入した場合の問題は何ですか。エラーでさえ、私がパラメーター化された短所を書いている行にあります。
私はJAVAを理解していますが、このコードで混乱しています。