如何修复ArrayList相关的NullPointerException?附Java代码报错求助
修复Java ArrayList相关的NullPointerException问题
嘿,作为Java新手遇到空指针确实头疼,我来帮你拆解这个问题!
为什么会抛出NullPointerException?
你看到的报错Exception in thread "main" java.lang.NullPointerException at BankSystem.Branches.findCustomer(Branches.java:44),问题出在你的Branches类的无参构造函数上:
public Branches(){}
当你用这个无参构造创建Branches对象时,用来存储客户的newCustomer这个ArrayList根本没被初始化,它的值还是null。之后调用findCustomer方法时,代码尝试执行this.newCustomer.size()——对一个null对象调用方法,这不就触发空指针异常了嘛!
两种修复方案任你选
方案1:给无参构造补初始化代码
如果你的业务场景必须用到无参构造创建分支对象,那就在无参构造里把newCustomer初始化好:
public Branches(){ this.newCustomer = new ArrayList<>(); }
这样不管用哪种构造函数创建Branches,newCustomer都不会是null了。
方案2:移除无参构造(或标记为过时)
如果你的代码里其实不需要用无参构造创建分支,直接把这个无参构造删掉就行。毕竟你的带参构造已经正确初始化了newCustomer:
// 直接删掉这个无参构造 // public Branches(){}
要是因为某些原因不能删除,也可以给它加上@Deprecated注解,提醒自己和其他开发者别再用它:
@Deprecated public Branches(){ // 保险起见,最好还是在这里也初始化ArrayList,避免再出NPE this.newCustomer = new ArrayList<>(); }
给Java新手的小提醒
- 对于需要初始化的成员变量(比如这里的ArrayList),尽量在构造函数里完成初始化,避免留
null的隐患; - 遇到NullPointerException时,先定位报错行的对象——看看哪个对象是
null,再回溯它的初始化逻辑,大部分时候都能快速找到问题。
内容的提问来源于stack exchange,提问作者Ahmed Abdullah
相关产品推荐
相关产品推荐

