我试图将键和值放在另一个类的 HashMap 中。NPE 不应该发生。我的实例设置正确,因为我可以毫无问题地访问 RingCreation 中的方法,但是当我尝试将对象放入 Main 中的 HashMap 时,它返回空指针错误,但是当我发出 HashMap 的调试消息时,它检测到它不是空的。我不想通过发布“又一个 NPE”日志来令人讨厌。我通常能够修复出现的大多数错误。
主班
HashMap<Integer,ItemStack> ringHolder = new HashMap<Integer,ItemStack>();
private RingCreation createRing;
private static Main instance;
public Main() {
this.createRing = new RingCreation();
}
@Override
public void onEnable() {
if(ringHolder.isEmpty()) System.out.println("ringholder is empty");
instance = this;
createRing.CreateLifeRing();
createRing.CreateRegenerationRing();
createRing.CreateStarterRing();
}
public static Main getInstance() {
return instance;
}
}
环创建类:
private RingOfLife ringLife;
private StarterRing startRing;
private RingOfRegeneration regenRing;
private Main main = Main.getInstance();
public RingCreation() {
this.ringLife = new RingOfLife();
this.startRing = new StarterRing();
this.regenRing = new RingOfRegeneration();
}
ItemStack ringOfLife;
ItemMeta ringOfLifeMeta;
ItemStack starterRing;
ItemMeta starterRingMeta;
ItemStack ringOfRegeneration;
ItemMeta ringOfRegenerationMeta;
public void CreateLifeRing() {
ringOfLife = new ItemStack(Material.RECORD_4);
ringOfLifeMeta = ringOfLife.getItemMeta();
ringOfLifeMeta.setDisplayName(ChatColor.GRAY+"Ring of"+ChatColor.GREEN+" Life");
ringOfLifeMeta.addItemFlags(ItemFlag.values());
ringOfLife.setItemMeta(ringOfLifeMeta);
System.out.println("createlifering working");
int loc = 2;
main.ringHolder.put(loc, ringOfLife);
}
主线33:
createRing.CreateLifeRing();
环创建第 44 行:
main.ringHolder.put(loc, starterRing);
控制台还输出:createlifering working
茅侃侃
相关分类