どうやら Java は私のコンストラクター コードは重要ではないと考えているようです。コンストラクターに任意のパラメーターを追加した場合にのみ、Java はそれを調べる価値があると判断します。
import java.util.ArrayList;
public class DataManager {
ArrayList<Variable> vars;
public DataManager() {
vars = new ArrayList<Variable>();
}
public void createVar(String type, String name, String strValue, int numValue) {
vars.add(new Variable(type, name, strValue, numValue));
}
}
そして、これを呼び出すコード:
DataManager data = new DataManager();
data.createVar(...);
変数クラス:
class Variable {
String type;
String name;
String strValue;
int numValue;
public Variable(String type, String name, String strValue, int numValue) {
this.type = type; this.name = name;
this.strValue = strValue;
this.numValue = numValue;
}
}
これを実行すると、
スレッド「メイン」の例外 java.lang.ArrayIndexOutOfBoundsException: 1 で Parser.start(Parser.java:25) で SudoCode.go(SudoCode.java:10) で SudoCode.main(SudoCode.java:6)
それで...どうしたの?パラメータ化されていないコンストラクタが無視されるのはなぜですか? それはあまり直感的ではありません。これは、明らかな意味を理解できないような設計上の選択でしたか? もしそうなら、私を啓発してください。そして、コンストラクターが実行されるように任意のパラメーターを追加するだけですか、それとも、ArrayList を初期化するためだけに設計されたメソッドを作成して明示的に呼び出す必要がありますか?
ありがとう!