2012-04-07 87 views
2

請原諒我的無知,但我無法在其他地方找到答案。Java:如何將一個類傳遞給一個函數實例化

我有以下代碼:

int value = 5; 
Strategy s = new Strategy(convert(value)); 
mainClass.setStuff(s, value); 

策略與被基於「價值」的轉換的數初始化。 mainClass使用未轉換的「值」。

我想要做的就是簡化這個過程,只給mainClass提供哪些Strategy使用的信息,以及哪些未轉換的值,因此mainClass應該做策略的實例化和初始化並處理值。

在C++中,這將是可能的模板:

int value = 5; 
mainClass.setStuff<Strategy>(value); 

我可以使這項工作在Java中不知何故?它似乎不像C++那樣使用泛型,Java不能推斷參數的類型,所以我無法初始化策略。

回答

5

setStuff方法簽名更改爲public <T extends Strategy> ReturnType setStuff(Class<T> clazz, int value)。然後你可以find the correct constructor並創建你的new instance

+0

但是,那不就是說要傳遞一個對象給setStuff嗎?換句話說,我需要實例化策略,將其傳遞給setStuff,然後再次實例化它以供使用?我在這裏看不到優勢。 – Cerno 2012-04-07 01:27:51

+0

@Cerno不,你正在傳遞對象的'Class',而不是對象本身。如果你想傳入'Strategy'類,你可以調用'setStuff(Strategy.class,value)'。 – Jeffrey 2012-04-07 01:30:25

+0

啊,我明白了。我會給那個一個去。 – Cerno 2012-04-07 01:32:12

相關問題