显然,Java 认为我的构造函数代码并不重要,因此它完全忽略它,然后当我尝试访问我认为已初始化的 ArrayList 时用 NullPointerException 对我大喊大叫。只有当我向构造函数添加任意参数时,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;
}
}
运行此结果
线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException: 1 at Parser.start(Parser.java:25) at SudoCode.go(SudoCode.java:10) at SudoCode.main(SudoCode.java:6)
所以……有什么关系?为什么构造函数没有参数化时会被忽略?这不是很直观。这是某种我看不到明显含义的设计选择吗?如果有,请赐教。我应该添加一个任意参数以便执行构造函数,还是应该创建并显式调用一个专门用于初始化我的 ArrayList 的方法?
谢谢!