java - NullPointerException:我如何给它分配一些东西,使它不为空?

标签 java nullpointerexception playlist

好的,所以我尝试创建一个播放列表类,该类在构造函数中创建一个包含 50 个 SongRecords 的数组。我首先使用未经编辑的代码获得了 NPE,因此我尝试更改它并显式编写构造函数,将无信息的 SongRecord() 分配给播放列表中的每个元素。然而,NPE 出现在我引用要分配歌曲记录的特定歌曲元素的行处。如果我无法为元素分配歌曲记录,该如何修复?

下面是我的代码的一部分,我认为这是错误的相关信息。 NPE 指向行“this.amount[i]...”

public class Playlist {
   private int currentSongs;
   private SongRecord[] amount;
   public static final int MAX=50;


/*Constructor that defaults current number of songs to 0 and max space to be 50 songs*/

public Playlist(){
    this.currentSongs=0;
    SongRecord[] list=new SongRecord[MAX];
    for (int i=0; i<MAX;i++){
        this.amount[i]=new SongRecord();
    }
}

最佳答案

您创建了一个不同数组(使用变量 list ) - 但随后尝试填充 amount :

SongRecord[] list=new SongRecord[MAX];
for (int i=0; i<MAX;i++){
    this.amount[i]=new SongRecord();
}

amount仍然为 null(所有引用类型变量的默认值),因此您会收到异常。

我怀疑你想要:

amount = new SongRecord[MAX];
for (int i = 0; i < MAX;i++) {
    amount[i] = new SongRecord();
}

或者更好的是,更改 amountList<SongRecord> 类型的变量然后将其初始化为:

amount = new ArrayList<SongRecord>(); // Or new ArrayList<> if you're using Java 7

一般来说,集合类比数组更容易使用。

关于java - NullPointerException:我如何给它分配一些东西,使它不为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18728400/

相关文章:

javascript - 查找与搜索匹配的歌曲(艺术家和/或轨道名称)

windows batch .bat 自动 .m3u 播放列表创建/更新

java - hdfs纯文本写入hbase,未设置输出目录

java - Jenkins : Cannot run program "hg"

android - DialogFragment 导致空指针崩溃

java - 无法摆脱比较器的 NullPointerException

java - 如何暂停线程执行

java - 在 fragment Activity 中使用列表适配器

java JMenuItem NullpointerException(覆盖 swing 类时初始化错误)

jquery - 如何使用 Jquery 制作一个简单的 HTML 播放列表