java布尔值已更改,但if语句无法识别
我有两个班,“一班”和“二班”。 当我在“class1”中初始化一个名为“test”(true)的布尔值,并在“class2”中的if-语句中请求它的值时,一切正常。 但是,当我将某个方法中的值从“test1”更改为false时,它就无法识别“class2”中if语句中的更改
我的目标是,一旦视频结束,布尔值就会改变,并且class2中的if语句能够识别它
类别1:
public boolean test1= true; //This is recognized by the if-statement in class2
...
@Override
public void onRewardedVideoAdRewarded(Placement placement) {
test1 = false; //this is getting ignored by the if-statement in class2
}
类别2:
Class1 class1 = new Class1();
if(class1.test1){
// Do something
}else{
// Do something else
}
我希望你能帮助我,谢谢
# 1 楼答案
Java是一种所谓的面向对象语言。对于在名为“Movie”的类中定义的所有“静态”成员,无论创建了多少个Movie对象,都有一个静态成员。但对于普通(非静态)成员,每个创建的对象都有一个
因此,当您编写
Class1 class1 = new Class1();
时,您正在创建一个新的class1对象,从而创建其中每个非静态成员的副本。这意味着您的运行时中至少有两个class1对象的实例,当您说test1 = false
时,您正在更新test1字段,它是另一个对象的一部分,而不是另一个类正在读取的对象的一部分解决方案是什么?将class1的实例传递给class2的某个方法(或构造函数),或者可能使用静态字段或其他解决方案;您没有粘贴足够的代码来有意义地猜测最佳方法是什么