我正在尝试将类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
我哪里错了?
答案 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")