检查字段后抛出的NullPointerException是否为null

时间:2013-09-06 19:47:40

标签: java nullpointerexception bukkit

我正在为Bukkit(http://bukkit.org)开发一个插件,在验证它不为null之后,它在第二行给出了一个NullPointerException

    String description = getConfig().getString("core.commands."+cmd+".description");
    if (!(description.isEmpty()))
          getCommand(cmd).setDescription(description);
    else 
          getLogger().warning("NO description assigned to: " + cmd);
    description = null;

3 个答案:

答案 0 :(得分:2)

isEmpty()null检查不同。 isEmpty() String检查为空String(表示"")。

您需要执行类似

的操作
if (description != null && !description.isEmpty())

答案 1 :(得分:2)

您的代码!(description.isEmpty())无法验证description是否为空。为此,您需要description != null

您的测试应该是:

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

答案 2 :(得分:0)

我怀疑问题在<{1}}条件下不是 - 但在后面的语句中。我会通过重新格式化代码来启动

if

(我删除了String description = getConfig().getString("core.commands." + cmd + ".description"); if (!description.isEmpty()) { getCommand(cmd).setDescription(description); } else { getLogger().warning("NO description assigned to: " + cmd); } 声明,因为它几乎肯定是不必要的。)

通过这种改变,你将能够更多地了解抛出异常的原因。你可以走得更远:

description = null;

除了其他任何东西,当你现在在调试器中逐步执行代码时(假设它甚至可行),你将能够判断String description = getConfig().getString("core.commands." + cmd + ".description"); if (!description.isEmpty()) { Command command = getCommand(cmd); // Or whatever type it is command.setDescription(description); } else { getLogger().warning("NO description assigned to: " + cmd); } 是否为空(我怀疑它是)。如果您不能使用调试器,则至少可以添加日志记录。

(其他人已经建议检查command是否description,但听起来这不是问题,这就是为什么我建议问题可能在null声明。)

相关问题