繁体   English   中英

"如何从对象的构造函数中的另一个类访问布尔值?"

[英]How do I access a boolean from another class in the constructor of an object?

所以我有一个主类,在这个类中我有一个名为 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 时,我希望能够访问“测试”。 如何将它作为布尔对象访问,而不是作为实际的布尔值? 如果这有任何意义。

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

您可以定义一个接口:

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

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

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

[r}>>sys.pixelchanger.letterenderer.render("hello world");
[r}>>sys.pixelchanger.letterenderer.rener("hello world");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM