我正在为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;
答案 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
声明。)