将类对象的实例添加到ArrayList的问题,我做错了什么? [JAVA]

时间:2015-10-29 06:00:31

标签: java class methods arraylist constructor

我正在尝试将类Track的对象添加到我的ArrayList Track播放列表中。

import java.util.ArrayList;

public class PlayList {
    private String playList;
    private ArrayList <Track> myTracks;

    //constructors
    public PlayList(String name) {
        this.playList = name;
    }

    public PlayList(String name, ArrayList<Track> tracks) {
        this.playList = name;
        this.myTracks = tracks;
    }

    public addTrack(Track track){
        myTracks.add(0,track)
    }
}

但是我的构造函数和addTrack方法都失败了,显示了java.lang.NullPointerException

我哪里错了?

4 个答案:

答案 0 :(得分:2)

您的构造函数中永远不会出现异常。根本没有机会。

添加方法的原因是您正在使用myTracks.add(0,track)并且您从未初始化列表

private List<Track> myTracks = new ArrayList<Track>();

答案 1 :(得分:0)

您需要将ArrayList和代码初始化为界面。 使用:private List<Track> myTracks = new ArrayList<>();(对于java -7以下的java版本,请使用new ArrayList<Track>();

答案 2 :(得分:0)

我认为您的构造函数失败是因为您尝试从playList初始化对象: -

playList myList = new playList();

这会给你错误,因为没有defualt构造函数,默认情况下不会创建它(除非你定义另一个构造函数,否则会自动生成默认构造函数)

如果你没有像这样创建你的playList对象,那么没办法你在构造函数中有一个异常

addmethod错误的原因是您初始化了列表

你必须这样做: -

private List<Track> myTracks = new ArrayList<Track>();

答案 3 :(得分:0)

你得到&#34; NullPointerException&#34;在Arraylist中,因为你还没有首先初始化它。您只能在首次初始化后才能在列表中添加项目。 所以这样写,然后尝试 -

private List<Track> myTracks = new ArrayList<Track>();

就构造函数而言,我认为你没有提供所需的参数。当您调用PlayList类的构造函数时,您需要将正确的值作为您定义的参数传递(在本例中为2个构造函数)。如果你不这样做,它将抛出一个错误,因为没有默认(无参数)构造函数。所以试试这个 -

PlayList myList=new PlayList("//give name","//ArrayList name which contains the tracks")