是否可以在创建该类的对象之前将类的布尔变量设置为 true



嗨,我有一个要求,我需要即时选择 is4cselected true 的值。

public class A {
        boolean is4cselected=false;
        public A(){
            //
    //
        }
        public void set4c(){
            is4cselected=true;
        }
    }
    class B{
        public static void main(String args[]){
            A a=new A();
            a.set4c();
        }
    }

我不认为它会发生,因为我们必须首先创建 A 类的对象。

有没有其他方法可以实现这一目标?我的意思是说我需要 is4cselect 在某些 if 情况下为假,在 main() 中的某些 if-else 条件下为真。提前致谢

对类本身的变量使用 static 关键字

如果 is4cselected 与类 A 的所有关联,而不仅仅是类 A 的特定实例,那么您可以使用静态成员(换句话说,如果只有 1 个is4cselected,则在所有A之间共享);

public class A {
     static boolean is4cselected=false;
        ......

然后你可以像往常一样将其称为 A.is4cselected,使用 privatepublic

或者,如果它与特定实例相关联,则只需在构造函数中传递它

使用构造函数初始化类的实例

public class A {
    boolean is4cselected;
    public A(boolean is4cselected){
          this.is4cselected=is4cselected;
    }
    ......

您将像这样创建类 A;

A a=new A(true);

您可以添加一个构造函数,该构造函数为该字段获取布尔值,并在要创建具有默认值以外的值的类实例时调用该构造函数:

public A(boolean is4cselected){
    this.is4cselected = is4cselected
}

然后:

public static void main(String args[]){
    A a = new A(true);
}

在拥有实例之前,您无法更改实例成员 ( is4cselected ) 的值。

您可以添加一个构造函数,该构造函数允许您在 A 外部的任何内容访问实例之前设置该值:

public A(boolean sel) {
    is4cselected = sel;
}

。您将在这样的B中使用:

A a = new A(true);

或者你可以为它添加一个工厂函数:

public static A buildWithFlagSet() {
    A rv = new A();
    rv.set4c();
    return rv;
}

。您将在这样的B中使用:

A a = A.buildWithFlagSet();
public class A {
    boolean is4cselected=false;
    public A(is4cselected){
        this.is4cselected = is4cselected;
    }
    public void set4c(){
        is4cselected=true;
    }
}
class B{
    public static void main(String args[]){
        A a=new A(true);
    }
}

是:

看@静态{}我添加到你的代码中

public class A {
    static{
        boolean is4cselected=false;
    }
        public A(){
            //
    //
        }
        public void set4c(){
            is4cselected=true;
        }
    }
    class B{
        public static void main(String args[]){
            A a=new A();
            a.set4c();
        }
    }

最新更新