Java 同一方法中布尔值的不一致性
我在一个控制游戏性的类中有一个名为load的布尔值。如果用户在主菜单上单击“新建”,则会创建类,加载设置为false,因此游戏不会加载保存,反之亦然。以下是创建类和设置加载的方式: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”位于该代码所在方法的构造函数中。无论如何,这里是我
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的一个属性,在执行lineGameSecene.setLoad(load)时传递什么值代码>?在我的菜单类中,我有一个“新建”按钮和一个“加载”按钮。Load通过true,new不通过。然后调用第一段代码。这里有线程吗?例如,访问此类的工作线程与主线程?如果是这样,则应使布尔值为volatile。还应将load重命名为mLoad;)在setLoad中设置System.out.println,以查看实际传递的内容。但要将其私有化(并将其重命名,安卓的惯例是使用mLoad)(我不太喜欢这一点,但这都是关于一致性的)