簡體   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