簡體   English   中英

如何將陣列從一個 class 轉移到另一個?

[英]How to transfer array from one class to another?

我正在嘗試從 class 中的一個數組獲取數據到另一個 class (以便我可以復制結果)。 我知道通常您會使用 get-set 方法來實現這一點,但是,我不確定如何使用我擁有的類來實現這一點。

這個方法(在我的后端類中)隨機化了一個標簽數組,我希望結果在 2 個不同的類中。 一個 class 我可以得到結果,因為我有一個標簽數組,另一個 class 也是如此(但我希望第一個 class 的結果相同,而不是另一個不同的隨機數組)

public Label[] randomise(Label[] lbl){
        Random randomiseArr = new Random();
        for (int i = 0; i < lbl.length; i++) {
            int randomIndexToSwap = randomiseArr.nextInt(lbl.length);
            Label temp = lbl[randomIndexToSwap];
            lbl[randomIndexToSwap] = lbl[i];
            lbl[i] = temp;
        }
        return lbl;
    }

這是我的第一個 class (我得到結果的地方,標簽已在上面創建 - 我只是沒有包括那些):

public void initialize(URL url, ResourceBundle rb) {
        
        backend back = new backend();
        
        Label[] lbl = {t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14,
            t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25};

        int ranClr = (int) (Math.random() * (10 - 1)) + 1;

        if (ranClr <= 5) {
            back.redTeam(back.randomise(lbl), clr1, clr2, clr3, clr4);
        } else {
            back.blueTeam(back.randomise(lbl), clr1, clr2, clr3, clr4);
            
        }
        
        
    }

這是 class 我想要隨機化方法的完全相同的結果:

    public void initialize(URL url, ResourceBundle rb) {
        
        backend back = new backend();
        
        Button[] btn = {btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9,
            btn10, btn11, btn12, btn13, btn14, btn15, btn16, btn17, btn18, btn19,
            btn20, btn21, btn22, btn23, btn24, btn25};

        Label[] lbl = {lbl1, lbl2, lbl3, lbl4, lbl5, lbl6, lbl7, lbl8, lbl9,
            lbl10, lbl11, lbl12, lbl13, lbl14, lbl15, lbl16, lbl17, lbl18, lbl19,
            lbl20, lbl21, lbl22, lbl23, lbl24, lbl25};
}

在您的backend class 中,我建議您有一個可以保存隨機數組的字段。 這樣,您可以通過 getter 訪問多個類之間的數組。

例如,您可以在backend class 的頂部有這樣一個字段:

private Label[] randomisedLabels;

然后,您可以為該字段設置一個吸氣劑:

public Label[] getRandomisedLabels() {
    return randomisedLabels;
}

現在我們可以修改您的randomise方法,使其返回類型為void ,並將結果存儲在randomisedLabels中:

public void randomise(Label[] lbl){
    Random randomiseArr = new Random();
    for (int i = 0; i < lbl.length; i++) {
        int randomIndexToSwap = randomiseArr.nextInt(lbl.length);
        Label temp = lbl[randomIndexToSwap];
        lbl[randomIndexToSwap] = lbl[i];
        lbl[i] = temp;
    }
    // Instead of returning the array, store it so it can be used later
    randomisedLabels = lbl;
}

這樣做將允許您調用randomise一次,並使用getRandomisedLabels()多次調用的結果,而無需操作數據。

編輯:正如下面提到的 Cliabhach,此方法僅在您使用backend class 的相同實例時才有效,因為在 class 的每個實例中存儲了不同的數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM