gpt4 book ai didi

java 运行时 NullPointerException 尽管初始化

转载 作者:行者123 更新时间:2023-12-02 00:14:21 25 4
gpt4 key购买 nike

尽管正确初始化了所有对象(据我所知),我还是收到了空指针异常。基本上,我需要有人指出我在哪里是白痴。

运行时 NPE 发生在这里:

public class CDAlbum implements Album{
private String title;
private String genre;
private String artist;
private ArrayList<String> tracks;
private int i=0;

public CDAlbum() { //constuctor
title = "Unknown CD";
genre = "Unknown genre";
artist = "Unknown artist";
ArrayList<String> tracks = new ArrayList<String>(); //NPE occurs on this line
tracks.add("-- no tracks --");
}
//snip

调用构造函数的代码:

CDAlbum tempCD;
tempCD = new CDAlbum();

我认为我正在正确初始化所有内容,因此我看不到这个空指针异常来自何处。有一点帮助吗?

最佳答案

事实证明,您的问题是因为您忘记重新编译代码!从您的保管箱下载代码后,我反编译了 CDAlbum 以显示过时的构造函数:

public CDAlbum() {
i = 0;
title = "Unknown CD";
genre = "Unknown genre";
artist = "Unknown artist";
tracks.add("-- no tracks --");
}

重新编译后(按照我的建议),代码似乎工作正常。

<小时/>

正如我在 my comments 中所述,您此处的代码可能已被修改,并且不是产生异常的实际代码;您很可能尝试添加到 tracks 字段,但是您从未初始化它 - 您初始化了局部变量轨道

尝试执行以下操作...

tracks = new ArrayList<>(Collections.singleton("-- no tracks --"));

您应该发布 SSCCE或者至少是未经修改的代码以获得准确的帮助。如果你把它当作一个黑匣子,那么解决这个问题将会很困难。

<小时/>

请注意,您可以将所有初始化移动到字段声明中,例如

private String title = "Unknown CD";

关于java 运行时 NullPointerException 尽管初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12126668/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com