1

わかりました、これは私が頭を悩ませている本当に単純な問題だと思います....しかし、それは私の頭を殺しています。ソースは次のとおりです。

import java.util.Arrays;
public class InputValues {  
    public int[] myarrayvar;
    public InputValues(int[] myarraypass) {     
    ---- help here
    }
    public void init() {        
    ---help here
    }
    public int[] getmyarrayvar() {
        return myarrayvar;
    }
    public void setmyarrayvar(int[] myarraypass) {
        this.myarrayvar= mayarraypass;
    }
}

私はこれを

InputValues inputValues = new InputValues(myarraypass);
inputValues.init();

myarraypass は int[] 型です。

私が言ったように、これは本当に簡単なはずです....しかし、何らかの理由で動作させることができません....

4

2 に答える 2

1

次のことを試すことができます。

  1. インスタンス変数のアクセスをからpublicに変更しますprivate

  2. コンストラクターでは、次の行を使用できます。

    this.myarrayvar = myarraypass;

ただし、myarraypassクラス外で変更されたInputValues場合myarrayvarも影響を受けることに注意してください。

この動作を発生させたくない場合は、インデックスごとにコピーする必要があります。

this.myarrayvar = new int[myarraypass.length];
for(int i=0; i<myarraypass.length;i++)
    this.myarrayvar[i] = myarraypass[i];

また

this.myarrayvar = (int[]) myarraypass.clone();

また

this.myarrayvar = new int[myarraypass.length];
System.arraycopy(myarraypass, 0, this.myarrayvar, 0, myarraypass.length);
于 2012-10-19T09:38:58.530 に答える
1
  1. myarrayvar が公開されている場合、なぜセッターとゲッターが必要なのですか。メンバーが外の世界にアクセスできない場合、つまり非公開とマークされている場合にのみ必要です。
  2. ネスト、配列を設定するためにコンストラクターで次を使用できます。
public InputValues(int[] myarraypass) { 

    this.myarrayvar = new int[myarraypass.length];    

    System.arraycopy(myarraypass, 0, this.myarrayvar, 0, myarraypass.length );

}
于 2012-10-19T09:44:02.717 に答える