Java 同一方法中布尔值的不一致性

Java 同一方法中布尔值的不一致性,java,android,methods,boolean,Java,Android,Methods,Boolean,我在一个控制游戏性的类中有一个名为load的布尔值。如果用户在主菜单上单击“新建”,则会创建类,加载设置为false,因此游戏不会加载保存,反之亦然。以下是创建类和设置加载的方式: GameScene gameScene = new GameScene(); gameScene.setLoad(load); System.out.println("LOAD SET TO"+load); setScene(gameScene); 布尔“load”位于该代码所在方法的构造函数中。无论如何,这里是我

我在一个控制游戏性的类中有一个名为load的布尔值。如果用户在主菜单上单击“新建”,则会创建类,加载设置为false,因此游戏不会加载保存,反之亦然。以下是创建类和设置加载的方式:

GameScene gameScene = new GameScene();
gameScene.setLoad(load);
System.out.println("LOAD SET TO"+load);
setScene(gameScene);
布尔“load”位于该代码所在方法的构造函数中。无论如何,这里是我的游戏场景类中“加载”的初始化:

    public boolean load;
这是它的设定者:

public void setLoad(boolean load) {
     this.load = load;
}
以及它的吸气剂:

public boolean isLoad() {
    return load;
}
这是非常简单的,似乎它会很好地工作。但事实并非如此。我一直在运行:

System.out.println(isLoad());
现在,这准确地显示了布尔值。但不一致的地方在于我的方法从XML文件加载一个级别。这是其中的一部分:

else if ((type
                            .equals(TAG_ENTITY_ATTRIBUTE_TYPE_VALUE_NPC))
                            && !(isLoad())) {
                        npc = new NPC(x, y, vbom, physicsWorld) {
                        };
                        levelObject = npc;
                        System.out.println("Load is: "+isLoad());
看起来,无论负载是什么,这都会运行。它每次都被调用,并打印isLoad(),它在某种程度上要么是真的,要么是假的—整个时间都是假的


这是非常基本的java,我不知道为什么在一瞬间调用isLoad()方法时会发生变化。Load在类的创建时设置一次,之后不进行任何操作。那么为什么会发生这种情况呢?

首先,在我看来,您应该将
公共布尔加载
设置为
私有布尔加载
。知道
load
变量是
GameSecene
class的一个属性,在执行line
GameSecene.setLoad(load)时传递什么值?在我的菜单类中,我有一个“新建”按钮和一个“加载”按钮。Load通过true,new不通过。然后调用第一段代码。这里有线程吗?例如,访问此类的工作线程与主线程?如果是这样,则应使布尔值为volatile。还应将load重命名为mLoad;)在setLoad中设置System.out.println,以查看实际传递的内容。但要将其私有化(并将其重命名,安卓的惯例是使用mLoad)(我不太喜欢这一点,但这都是关于一致性的)