這可能是一個相當主觀的問題,但可能不是。 我的應用程序包含一些在不同時間向用戶顯示的窗體。每種形式都是自己的一類。通常,用戶單擊一個按鈕,該按鈕將啓動一個新表單。Java反射適當性
我有一個建立這些按鈕的方便的功能,你這樣稱呼它:
buildButton("button text", new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
showForm(new TasksForm(args...));
}
});
我這樣做幾十次,這真的很麻煩不必每次都要做出SelectionAdapter。
真的所有我需要的按鈕知道的是,當它被點擊,哪些參數給構造函數來實例化什麼課,所以我建立了我這樣調用的函數:
buildButton("button text", TasksForm.class, args...);
凡ARGS是可以用來正常實例化TasksForm的對象的任意列表。
它使用反射從類中獲取構造函數,匹配參數列表,並在需要時創建實例。大多數情況下,我不必將任何參數傳遞給構造函數。不利的一面是,如果我傳遞了一組錯誤的參數,它在編譯時無法檢測到,所以如果失敗,會在運行時顯示一個對話框。但它通常不會失敗,如果它確實很容易調試。
我認爲這更清潔,因爲我來自使用函數和類文字的語言很常見。但是如果你是一個普通的Java程序員,會看到你這個怪胎,或者你會感激不必掃描一個zillion SelectionAdapters?
我會用反射去。 – 2010-05-15 19:33:51