请原谅我的无知,但在其他地方找不到答案。
我有以下代码:
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。