2014-06-05 157 views
1

是否可以在循環中批量初始化Java中的某些常規變量?這裏的「常規」意味着這些變量被初始化。是否有可能在Java中批量初始化常規變量?

E.g

Button btn1; 
Button btn2; 
Button btn3; 
Button btn4; 

btn1 = new Button(parentComposite, SWT.CHECK); 
btn1.setText("Button1"); 
btn1.setSelection(true); 
btn1.setEnabled(true); 
btn1.setEnabled(true); 
btn1.addSelectionListener(bottonAdapter); 

bt2 = new Button(parentComposite, SWT.CHECK); 
btn2.setText("Button2"); 
btn2.setSelection(true); 
btn2.setEnabled(true); 
btn2.setEnabled(true); 
btn2.addSelectionListener(bottonAdapter); 

btn3 = new Button(parentComposite, SWT.CHECK); 
btn3.setText("Button3"); 
btn3.setSelection(true); 
btn3.setEnabled(true); 
btn3.setEnabled(true); 
btn3.addSelectionListener(bottonAdapter); 

btn4 = new Button(parentComposite, SWT.CHECK); 
btn4.setText("Button4"); 
btn4.setSelection(true); 
btn4.setEnabled(true); 
btn4.setEnabled(true); 
btn4.addSelectionListener(bottonAdapter); 

正如你看到的,4個按鍵被初始化完全一樣。唯一的區別是變量名稱以相同的單詞'btn'開頭,並以增加的數字結束。

那麼這些按鈕可以通過反射或動態代理或其他方式在循環中初始化?

回答

4

最簡單的方法也只是創造做的方法是:

private Button createButton(String text) { 
    Button ret = new Button(parentComposite, SWT.CHECK); 
    ret.setText(text); 
    ret.setSelection(true); 
    ret.setEnabled(true); 
    ret.addSelectionListener(buttonAdapter); 
} 

然後:

Button btn1 = createButton("Button1"); 
Button btn2 = createButton("Button2"); 
Button btn3 = createButton("Button3"); 
Button btn4 = createButton("Button4"); 

你也應該考慮使用一個集合,而不是四個獨立的變量,如果你想能夠以同質方式進行進一步處理。然後,你可以它在一個循環:

List<Button> buttons = new ArrayList<>(); 
for (int i = 1; i <= 4; i++) { 
    Button button = new Button(parentComposite, SWT.CHECK); 
    button.setText("Button" + i); 
    button.setSelection(true); 
    button.setEnabled(true); 
    button.addSelectionListener(buttonAdapter); 
    buttons.add(button); 
} 
0

你可以使用一個數組初始化這些按鈕:

Button[] buttons = new Button[4]; 

for(int i =0;i< buttons.length(); i++) 
{ 
    buttons[i] = new Button(parentComposite, SWT.CHECK); 
    buttons[i].setText("Button"+(i+1)); 
    buttons[i].setSelection(true); 
    buttons[i].setEnabled(true); 
    buttons[i].addSelectionListener(bottonAdapter) 
}