请原谅我的无知,但在其他地方找不到答案。

我有以下代码:

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


该策略使用基于“值”转换的数字初始化。
mainClass使用未转换的“值”。

我想做的是通过仅给mainClass提供要使用的Strategy以及未转换的值的信息来简化此过程,于是mainClass应该对Strategy进行实例化和初始化并处理该值。

在C ++中,可以通过模板来实现:

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


我可以用Java进行这项工作吗?与C ++不同,它似乎不能与泛型一起使用,Java无法推断参数的类型,因此我无法初始化Strategy。

最佳答案

setStuff方法签名更改为public <T extends Strategy> ReturnType setStuff(Class<T> clazz, int value)。然后,您可以find the correct constructor并创建您的new instance

10-07 23:06