Java、策略模式、泛型和返回类型

标签 java generics

我正在实现策略模式:

public interface Stuff<T> {
  T getStuff();
}

public class IntegerStuff implements Stuff<Integer> {
  public Integer getStuff() { .. }
}

public class StringStuff implements Stuff<String> {
   public String getStuff() { .. }
}

现在,我想使用“上下文”来设置策略并执行策略方法:

public class Context() {
   private Stuff stuff;
   public setStrategy(Stuff stuff) { this.stuff = stuff; }

   public Object doStuff() { // ARGH!
      return stuff.getStuff()
   }
}

如何使用泛型,使 Context 类上的 doStuff() 方法的类型可以与所用策略的类型相同?

最佳答案

您还想参数化 Context:

public class Context<T> {
   private Stuff<T> stuff;
   public setStrategy(Stuff<T> stuff) { this.stuff = stuff; }

   public T doStuff() { // ARGH!
      return stuff.getStuff()
   }
}

关于Java、策略模式、泛型和返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39168724/

相关文章:

java - Swing 报告工具

java - 无法解决 "java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]Invalid Descriptor Index"错误

java - 将字符串拆分到中心

java - 泛型子类

c# - 使用不同的泛型参数初始化泛型集合数组

java - Eclipse:JRE 系统库选择 - 执行环境与备用 JRE

java - 在 Java 中向上转换或移动时抑制符号扩展

java - Java 泛型中有没有办法说 "T extends Thing or T extends SomethingElse"?

java - 让带有泛型实现的队列打印特定的对象属性

typescript - 带有通用参数的 typescript 工厂