为什么java.lang.String不等于硬编码的String?

时间:2015-01-10 12:23:59

标签: java

我一直在为CraftBukkit Minecraft服务器开发。这为我提供了一个很好的API。此API包含onCommand方法,允许我实现新命令。

我一直在尝试这样做,但当我发送/example arg0之类的命令时,出于某种原因,我无法与我的代码中的arg0进行比较。我尝试检查args[0] == "on"的时间,但是argsargs[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?

0 个答案:

没有答案