创建一个与ArrayList具有类似功能的新类,添加值时出错?

时间:2014-03-25 03:03:42

标签: java class arraylist nullpointerexception

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

1 个答案:

答案 0 :(得分:1)

您已获得NullPointerException,因为您已定义方法void Sequence()而非构造函数Sequence()。因此,您在main方法的第一行调用的构造函数是默认构造函数

默认构造函数的行为是调用超类的无参数构造函数(在本例中为Object()),在这种情况下将保留序列而不分配任何内容。

构造函数不指定返回类型(如void,指定没有返回类型)。在这种情况下,它将被定义如下:

public Sequence() { 
    values = new ArrayList<Integer>();
}