[英]Issue with adding instance of class object to ArrayList, what am I doing wrong? [JAVA]
我試圖類的對象添加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
我要去哪里錯了?
您永遠不會在構造函數中得到異常。 根本沒有機會。
而添加方法的原因是您正在使用myTracks.add(0,track)
且從未初始化過列表
private List<Track> myTracks = new ArrayList<Track>();
您需要初始化ArrayList
並編寫代碼到接口 。 使用: private List<Track> myTracks = new ArrayList<>();
(對於Java -7以下的Java版本,請使用new ArrayList<Track>();
)
我認為您的構造函數失敗了,因為您嘗試像這樣從playList
初始化對象:
playList myList = new playList();
這會給您錯誤,因為沒有默認的構造函數,並且默認情況下不會創建(除非您定義其他構造函數,否則會自動生成默認構造函數)
如果沒有像這樣創建playList對象,則構造函數中不會出現異常
而addmethod錯誤的原因是您初始化了列表
您必須這樣做:
private List<Track> myTracks = new ArrayList<Track>();
您在Arraylist中得到“ NullPointerException”,因為尚未首先對其進行初始化。 您必須先初始化列表后才能在列表中添加項目。 因此,改為這樣寫,然后嘗試-
private List<Track> myTracks = new ArrayList<Track>();
就構造函數而言,我認為您沒有提供所需的參數。 當您調用PlayList類的構造函數時,您需要傳遞正確的值作為您定義的參數(本例中為2個構造函數)。 如果不這樣做,則將拋出錯誤,因為沒有默認(無參數)構造函數。 所以嘗試這樣-
PlayList myList=new PlayList("//give name","//ArrayList name which contains the tracks")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.