【问题标题】:Creating a new class with similar functions as an ArrayList, errors in adding values?创建具有与 ArrayList 类似功能的新类,添加值时出错?
【发布时间】:2014-03-25 03:03:42
【问题描述】:
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

我正在尝试创建一个类似于ArrayList 的类Sequence,并为其提供新方法。将新值添加到 ArrayList 时,我得到一个 NullPointerException

【问题讨论】:

    标签: java class arraylist nullpointerexception


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 谢谢,这解决了问题。
    猜你喜欢
    • 2012-07-04
    • 1970-01-01
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    • 2011-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多