2

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

我有以下代码:

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

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

我想做的是通过仅向 mainClass 提供要使用的策略以及未转换的值的信息来简化这一点,因此 mainClass 应该进行策略的实例化和初始化并处理该值。

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

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

我可以以某种方式在 Java 中完成这项工作吗?它似乎不适用于泛型,因为与 C++ 不同,Java 无法推断参数的类型,因此我无法初始化 Strategy。

4

1 回答 1

5

setStuff将方法签名更改为public <T extends Strategy> ReturnType setStuff(Class<T> clazz, int value). 然后你可以找到正确的构造函数并创建你的新实例

于 2012-04-07T01:17:44.793 回答