有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    Java是一种所谓的面向对象语言。对于在名为“Movie”的类中定义的所有“静态”成员,无论创建了多少个Movie对象,都有一个静态成员。但对于普通(非静态)成员,每个创建的对象都有一个

    因此,当您编写Class1 class1 = new Class1();时,您正在创建一个新的class1对象,从而创建其中每个非静态成员的副本。这意味着您的运行时中至少有两个class1对象的实例,当您说test1 = false时,您正在更新test1字段,它是另一个对象的一部分,而不是另一个类正在读取的对象的一部分

    解决方案是什么?将class1的实例传递给class2的某个方法(或构造函数),或者可能使用静态字段或其他解决方案;您没有粘贴足够的代码来有意义地猜测最佳方法是什么