好的,所以我尝试创建一个播放列表类,该类在构造函数中创建一个包含 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();
}
或者更好的是,更改 amount
到 List<SongRecord>
类型的变量然后将其初始化为:
amount = new ArrayList<SongRecord>(); // Or new ArrayList<> if you're using Java 7
一般来说,集合类比数组更容易使用。
关于java - NullPointerException:我如何给它分配一些东西,使它不为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18728400/