2012-04-07 49 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

相关问题