跨包调用Student类addEvents方法时遭遇NullPointerException问题求助
问题原因
报错的核心是Student类中的events ArrayList未完成初始化,调用add()方法时它还是null,触发了NullPointerException。
解决办法
方式一:声明时直接初始化
在Student类里修改events的定义,直接创建ArrayList实例:
// 在Student类的成员变量部分 private ArrayList<Event> events = new ArrayList<>();
方式二:通过构造方法初始化
给Student类添加构造方法,在对象创建时完成events的初始化:
public class Student { private ArrayList<Event> events; public Student() { // 初始化ArrayList events = new ArrayList<>(); } // 原有的addEvents方法 public void addEvents(Event e) { if(e != null) events.add(e); } }
可选优化
为了更稳妥,可以在addEvents方法中额外增加对events的非空判断,防止后续初始化逻辑变更再次引发问题:
public void addEvents(Event e) { if(e != null && events != null) { events.add(e); } }
内容的提问来源于stack exchange,提问作者boutheina
相关产品推荐
相关产品推荐

