【问题标题】:How do I access a boolean from another class in the constructor of an object?如何从对象的构造函数中的另一个类访问布尔值?
【发布时间】:2015-01-08 14:35:05
【问题描述】:

所以我有一个主类,在这个类中我有一个名为 test 的布尔值。我希望能够在一定时间后打开或关闭它,所以我有一个名为 BooleanFlipCounter 的类。下面

public class BooleanFlipCounter implements Runnable {
    int seconds;
    boolean booleanToFlip;
    boolean setOnOrOff;

    // Seconds is seconds before flip.
    // booleanToFlip is where you define where you use it which boolean to use.
    // setOnOrOff is true or false, whether it flips it to on or off after a
    // certain time.

    public BooleanFlipCounter(int secondss, boolean booleanToFlips, 
                              boolean setOnOrOffs) {
        seconds = secondss;
        booleanToFlip = booleanToFlips;
        setOnOrOff = setOnOrOffs;
    }

    @Override
    public void run() {
        // TODO Auto-generated method stub
        while (seconds <= 0) {

            System.out.println("1: " + booleanToFlip + " : " + setOnOrOff);
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            seconds--;
            System.out.println("Minused");

        }

        if (setOnOrOff == true) {
            Main.test = true;
            System.out.println("2: " + booleanToFlip + " : " + setOnOrOff);
        } else if (setOnOrOff == false) {
            Main.test = false;
            System.out.println("3: " + booleanToFlip + " : " + setOnOrOff);
        }

    }

}

我希望在创建新的 BooleanFlipCounter 时能够访问“测试”。如何将它作为布尔对象访问,而不是作为实际的布尔值?如果这有任何意义。

【问题讨论】:

标签: java constructor boolean


【解决方案1】:

boolean 变量不是对象,您不能“作为”对象访问它。如果您想要引用 boolean 变量,则需要使用对包含它的对象的引用。

你可以定义一个接口:

public interface Testable {
    boolean isTest();
    void setTest(boolean test);
}

然后您可以让您的Main 类根据其内部test 标志实现Testable,并使BooleanFlipCounter 引用它应该操作的Testable 对象。

(请注意,这需要您创建Main 类的实例,或者至少是实现Testable 接口的东西。如果Main.test 标志当前是静态的变量,请考虑将其设为非静态。您可以让您的静态 main 方法创建一个 new Main() 并在其上调用一个方法来完成实际工作。)

【讨论】:

    猜你喜欢
    • 2020-07-11
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 2018-06-24
    • 1970-01-01
    • 2018-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多