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

时间:2013-10-15 10:27:55

标签: java

嗨,我有一个要求,我需要动态的is4cselected值。

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类的对象。

有没有其他方法可以实现这一目标?我的意思是说我需要is4cselected在某些情况下是假的,并且在main()中的某些if-else条件中是真的。在此先感谢

5 个答案:

答案 0 :(得分:0)

将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);

答案 1 :(得分:0)

您可以添加一个构造函数,该构造函数接受该字段的布尔值,并在您想要使用非默认值创建该类的实例时调用它:

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

然后:

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

答案 2 :(得分:0)

在拥有实例之前,您无法更改实例成员(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();

答案 3 :(得分:0)

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);
    }

}

答案 4 :(得分:-3)

YES:

看@ static {}我添加到你的代码

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();

        }

    }