You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Model类调用view.getHumanName()出现空指针异常的原因排查

空指针异常原因分析与解决办法

首先看你给出的Model构造方法代码,问题核心出在代码执行顺序上!

你提到已经在构造方法里加了this.view = view,但从你贴的代码片段来看,你是先调用了view.getHumanName(nameB),之后才给this.view赋值的对吧?Java里构造方法的代码是按从上到下的顺序执行的,当你执行nameA = view.getHumanName(nameB);这行时,view变量还处于未初始化的null状态,自然就触发空指针异常了。

举个直观的例子,你当前的构造方法逻辑大概是这样的:

public Model(Dice die){ 
    nameB = "Toby"; 
    nameA = view.getHumanName(nameB); // 这里view还是null!
    p1 = new Player(nameA); 
    p2 = new Player(nameB); 
    this.die = ...
    this.view = view; // 赋值在调用之后,太晚了!
}

解决办法很简单:

  • 把this.view = view;这行代码移到构造方法的最开头,确保在调用view的任何方法之前,先完成view的赋值:
public Model(Dice die, View view){ // 注意:构造方法参数里必须传入view对象!
    this.view = view; // 先完成赋值,让view不再是null
    nameB = "Toby"; 
    nameA = view.getHumanName(nameB); // 现在调用view的方法就不会报错了
    p1 = new Player(nameA); 
    p2 = new Player(nameB); 
    this.die = ...
}

另外还要额外确认一点:你在创建Model实例的时候,确实传入了一个非null的View对象,而不是传了null进去。如果调用Model构造时传的view本身就是null,那即使提前赋值也没用哦。

内容的提问来源于stack exchange,提问作者T.Jones8910

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:03:43