私はクラスを持っています、そしてそのクラスでは私はこれを持っています:
//some code
private int[] data = new int[3];
//some code
次に、私のコンストラクタで:
public Date(){
data[0] = 0;
data[1] = 0;
data[2] = 0;
}
これを行えば、すべてが大丈夫です。デフォルトのデータ値が初期化されますが、代わりにこれを行う場合:
public Date(){
int[] data = {0,0,0};
}
それは言う:
Local variable hides a field
どうして?
コンストラクタ内で配列を初期化する最良の方法は何ですか?
data後の変数"//some code"はクラス全体のスコープを持っています。一方、dataコンストラクター内の変数は、コンストラクター内にスコープを持っています。コンストラクタが完了すると、変数は破棄されます。また、dataコンストラクター内の変数は、クラス内で同じ名前の変数を非表示にします。これはエラーを正当化しますLocal variable hides a field