我一直在为CraftBukkit Minecraft服务器开发。这为我提供了一个很好的API。此API包含onCommand
方法,允许我实现新命令。
我一直在尝试这样做,但当我发送/example arg0
之类的命令时,出于某种原因,我无法与我的代码中的arg0
进行比较。我尝试检查args[0] == "on"
的时间,但是args
和args[0]
都已定义,我将args[0]
设置为"在"上,比较仍然返回false。
private CBPlugin pluginReference;
public NerfTntExecutor(CBPlugin plugin) {
// (...)
pluginReference = plugin;
}
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (sender.hasPermission("command.op.nerftnt")) {
if(args.length > 0) {
// (...)
sender.sendMessage(args[0]);
sender.sendMessage(args[0].getClass().getName());
if(args[0] == "on")
sender.sendMessage("true");
return true;
}
else {
sender.sendMessage("Not enough arguments!");
return false;
}
}
else {
pluginReference.getLogger().info("No permission");
return false;
}
}
sender.sendMessage
次调用显示返回给发送命令的人的数据。在这种情况下,args[0]
显示为" on"并且args[0].getClass().getName()
显示为java.lang.String
- 参数的类型。但是,下一行if(args[0] == "on")
为false。
这是为什么?我似乎将String
与另一个String
进行比较,它们都具有相同的内容。为什么两者的比较会返回false?