簡體   English   中英

將類對象的實例添加到ArrayList的問題,我在做什么錯? [JAVA]

[英]Issue with adding instance of class object to ArrayList, what am I doing wrong? [JAVA]

我試圖類的對象添加Track到我的ArrayListTrack ,播放列表。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM