gpt4 book ai didi

java - 关于 ArrayList 的 NullPointerException?

转载 作者:行者123 更新时间:2023-12-01 10:05:26 25 4
gpt4 key购买 nike

java.lang.NullPointerException
at videostore.BinaryFile.adderoo(BinaryFile.java:47)
at videostore.VideoStore.jButton1ActionPerformed(VideoStore.java:384)
at videostore.VideoStore.access$100(VideoStore.java:17)
at videostore.VideoStore$2.actionPerformed(VideoStore.java:189)

第 47 行:if (videosList == null || videosList.size() == 0)

第 384 行:BinaryFile.adderoo(vid);

指的是以下方法:

public void adderoo(Video v) {
if (videosList == null || videosList.size() == 0) {
videosList = new ArrayList<>(10);
}
videosList.add(v);
}

第 17 行:public class VideoStore extends javax.swing.JFrame {

第 189 行:jButton1ActionPerformed(evt);

本质上,我正在尝试将一个视频对象添加到我创建的名为videosList的Arraylist中。然而,每次我尝试时,我都会遇到异常,我不知道为什么,因为我用一个大小初始化了 ArrayList..

初始化 BinaryFile 类中的数组列表:public static ArrayList<Video> videosList;

然后我有一个名为 load 的方法,我在主 videoStore 类的构造函数中运行该方法:

public void load() throws Exception {

BufferedReader br = new BufferedReader(new FileReader(FILE_NAME));
if (br.readLine() != null) {
try {
File log = new File(FILE_NAME);
FileInputStream fileIn = new FileInputStream(log);
ObjectInputStream in = new ObjectInputStream(fileIn);
ArrayList<Video> videosList = (ArrayList)in.readObject();
in.close();
fileIn.close();
} catch (Exception i) {
i.printStackTrace();
}
} else {
ArrayList<Video> videosList = new ArrayList<>(10);
}
br.close();
}

此方法的目的是检查文件是否已包含 ArrayList,如果包含,则对其进行反序列化并将其放入 ArrayList 中。

我觉得我已经完成了所有的工作,所以我很困惑为什么会发生异常。

最佳答案

您的if 测试第一个条件,如果videosList 为空,感谢 Short-Circuit Evaluation它不应该测试第二个条件 videosList.size() == 0

if (videosList == null || videosList.size() == 0)

我建议您使用更安全的方法来测试您的 ArrayList 是否为 null 或空,例如使用提供的方法 .isEmpty() 或不同的 if 条件,就像我在评论中发布的那样:

if (videosList != null && !videosList.isEmpty())

注意:在评论中我使用了videosList.size > 0..但由于我们有.isEmpty(),所以最好使用它。

关于java - 关于 ArrayList 的 NullPointerException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36515326/

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