如何创建一个可以从一个类访问到另一个类的布尔值

时间:2014-05-07 13:00:37

标签: java plugins command boolean

我目前有两个类Main和Command。 它们都在emerica.simple包中 所以类路径是emerica.simple.Main和emerica.simple.Command

在main中我定义了一个名为spyblock的布尔

public class Main extends JavaPlugin{ public static boolean spyblock = true;

在命令中我试图访问它并更改它

public class Command implements CommandExecutor {
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    if (cmd.getName().equalsIgnoreCase("spyblocks")) {
        return true;
        if (Main.spyblock == true) {

            Main.spyblock = false;
        }
        else {
            Main.spyblock = true;
        }
    } 
    else 
    {
        return false;
    }
}

我可以更改此代码,以便它可以工作吗?我试图切换main.spyblock这个命令" Spyblocks"

4 个答案:

答案 0 :(得分:0)

您有unreachable code

if (cmd.getName().equalsIgnoreCase("spyblocks")) {
    return true;
     //unreachable code
    if (Main.spyblock == true) {

        Main.spyblock = false;
    }
    else {
        Main.spyblock = true;
    }
} 

这就是为什么Main.spyblock的价值不会改变的原因。

您将方法返回到第二个ifreturn true;之上,这就是您if未执行的原因,您必须在第二个{{1}之后放置return true;条件。

答案 1 :(得分:0)

由于

,您无法访问更改spyblock的代码
if (cmd.getName().equalsIgnoreCase("spyblocks")) {
        **return true;**
        if (Main.spyblock == true) {

            Main.spyblock = false;
        }
        else {
            Main.spyblock = true;
        }
    } 

突出显示的行。就这样移动

if (cmd.getName().equalsIgnoreCase("spyblocks")) {

        if (Main.spyblock == true) {

            Main.spyblock = false;
        }
        else {
            Main.spyblock = true;
        }
        **return true;**
    } 

希望这有帮助

答案 2 :(得分:0)

如果您只想切换它,请执行以下操作:

if (cmd.getName().equalsIgnoreCase("spyblocks")) {
   Main.spyblock = !Main.spyblock;
} 

答案 3 :(得分:0)

我没有完全了解你正在尝试做什么,但目前你的代码不能正确编译。

尝试将其更改为以下

public class Command implements CommandExecutor {
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    if (cmd.getName().equalsIgnoreCase("spyblocks")) {
        if (Main.spyblock == true) {
            Main.spyblock = false;
        }
        else {
            Main.spyblock = true;
        } 
        return true;
    }
    return false;
}

您也可以更改逻辑,使其更简单,因为您不必检查这两个条件,因为您总是切换它。因此,只需将其设置为与目前相反的情况。

    Main.spyblock = !Main.spyblock;