【问题标题】:Issue with adding instance of class object to ArrayList, what am I doing wrong? [JAVA]将类对象的实例添加到 ArrayList 的问题,我做错了什么? [JAVA]
【发布时间】:2016-01-29 03:58:44
【问题描述】:

我正在尝试将 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

我哪里错了?

【问题讨论】:

  • 你没有初始化你的数组列表因此你的方法失败了,试着只构造一个你的构造函数必须工作的对象
  • 您的代码无法编译。 addTrack() 应该有一个返回类型

标签: java class methods arraylist constructor


【解决方案1】:

您在 Arraylist 中收到“NullPointerException”,因为您没有先初始化它。只有先初始化后,您才能在列表中添加项目。 所以改为这样写并尝试 -

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

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

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

【讨论】:

    【解决方案2】:

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

    playList myList = new playList();
    

    这会报错,因为没有默认构造函数,并且默认没有创建(默认构造函数是自动生成的,除非你定义了另一个构造函数)

    如果你没有像这样创建你的 playList 对象,那么不可能你在构造函数中遇到异常

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

    你必须这样做:-

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

    【讨论】:

      【解决方案3】:

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

      add 方法的原因是你使用myTracks.add(0,track) 而你从来没有初始化你的列表

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

      【讨论】:

        【解决方案4】:

        您需要初始化ArrayList 和代码到接口。 使用:private List&lt;Track&gt; myTracks = new ArrayList&lt;&gt;();(对于java -7以下的java版本,使用new ArrayList&lt;Track&gt;();

        【讨论】:

        • 但是为什么构造函数是异常的?
        • @sᴜʀᴇsʜᴀᴛᴛᴀ - 我猜 OP 的代码不完整。他一定是在尝试将项目添加到 myTracks 。他当前的代码无法编译
        • 是的。可能他没有理解堆栈跟踪。
        猜你喜欢
        • 1970-01-01
        • 2013-06-15
        • 2015-04-26
        • 2013-11-12
        • 2012-03-16
        • 1970-01-01
        • 2013-10-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多