2010-10-01 79 views
1

我想創建一些我只能描述爲「代碼工廠方法」的東西。代碼工廠方法

爲了避免代碼重複,我想創建一個包含要執行的代碼的方法,但需要使用「佔位符」來表示類型應該去的地方。該方法當然會將這些類型作爲參數並將每個類型放在適當的位置。例如:

void factory(placeholder1, placeholder2){ 
    ArrayList<placeholder1> List = new ArrayList<placeholder1>; 
    Placeholder2 variable; 
} 
factory(String, Integer); 

會產生:

ArrayList<String> List = new ArrayList<String>; 
Integer variable; 

任何想法如何我會去嗎?

非常感謝您的幫助。

編輯:謝謝你的所有反饋。我採用了通用方法,並且一直工作了一段時間,直到我遇到我相信某人早先提到的東西。我想使用其中一個通用對象之一的方法,如:

Integer variable = new Integer();
variable.isInteger();

看來我不能用泛型來做到這一點。有沒有可能解決這個問題?

+3

您可能會從泛型教程中受益:http://download.oracle.com/javase/tutorial/extra/ generics/index.html – 2010-10-01 20:11:46

+2

在java中,「在多個位置執行代碼以允許代碼重用」的技術是「創建一個包含代碼的方法」。在你的例子中你正在做的是描述利用預編譯器(例如,用C語言)並且在Java語言中不支持的「通過重複使用」技術。 – DwB 2010-10-01 20:17:54

+0

@dwb,是否認爲OP正在尋求Java泛型之外的東西? – 2010-10-01 20:18:34

回答

2

下面是它會怎樣看:

<placeholder1, placeholder2> void factory(){ 
    ArrayList<placeholder1> List = new ArrayList<placeholder1>; 
    placeholder2 variable; 
} 
this.<String, Integer> factory(); 

但我與馬特同意,你應該對仿製藥讀了。此外,謹慎的類型擦除,因爲這可能不會做你期望的一切。

2

而不是簡單地採用泛型,它看起來像你想要某種宏觀設施。 Java沒有。例如,爲了擴展您的示例,您無法做任何類似的操作:

factory(String, Integer); 
List.get(variable);