2016-11-24 74 views
0

我的代碼中有大量的布爾變量,我想將它們傳遞給一個函數。多個布爾變量作爲函數參數

public myClass { 

     boolean isA, isB, isC, isD, isE, isF, isG; 

     // loop to set booleans true or false 

     String str = addString(isA, isB, isC, isD, isE, isF, isG); 
    } 

private String addString(boolean isA, boolean isB, boolean isC, boolean isE, boolean isF, boolean isG) { 
//code 
} 

程序工作的方式它會在任何時候都有2-3個變量。我想避免所有這些布爾值作爲參數,所以我在考慮給真正的人進入一個ArrayList,如:

public myClass { 

     boolean isA, isB, isC, isD, isE, isF, isG; 

     // loop to set booleans true or false 

     ArrayList<boolean> list = new ArrayList(); 

     if(isA) list.add(isA); 
     // same check for every variable 

     String str = addString(list); 
    } 

private String addString(ArrayList<boolean>list) { 
     //code 
} 

有沒有什麼更好的辦法?我想知道每次傳遞哪個布爾值。

+3

你能告訴你的代碼? – Mritunjay

+1

長參數列表被視爲代碼異味。將所有這些布爾值包裹在一個類或一個Map中並傳遞該對象。 –

+0

謝謝你的回答。我剛剛添加了一些代碼。 –

回答

1

您可以通過可變數量的布爾參數如下:

public void yourMethod(boolean .. booleans) { 
    // Your code here 
    for (boolean b : booleans) { 
     // Doing something with each boolean argument 
    } 

} 

你可以叫它爲:

yourMethod(true, true, false); 
yourMethod(true); 
yourMethod(false, false, false, false);