import java.util.ArrayList;
public class Sequence {
private ArrayList<Integer> values;
public void Sequence(){
values = new ArrayList<Integer>();
}
public void addValue(int ad){
this.values = values;
values.add(ad);
}
public String toString(){
return values.toString();
}
public static void main(String[] args) {
Sequence a = new Sequence();
a.addValue(1);
a.addValue(2);
System.out.println(a.toString());
}
}
我无法弄清楚为什么我为上面的代码获得了NullPointerException
。
我尝试创建类似于Sequence
的类ArrayList
,并为其提供新方法。将新值添加到ArrayList
时,我会得到NullPointerException
。
答案 0 :(得分:1)
您已获得NullPointerException
,因为您已定义方法void Sequence()
而非构造函数Sequence()
。因此,您在main方法的第一行调用的构造函数是默认构造函数。
默认构造函数的行为是调用超类的无参数构造函数(在本例中为Object()
),在这种情况下将保留序列而不分配任何内容。
构造函数不指定返回类型(如void
,指定没有返回类型)。在这种情况下,它将被定义如下:
public Sequence() {
values = new ArrayList<Integer>();
}