如何使用generics类型作为返回值和generics类型作为参数?

我尝试用generics创建一个抽象类。 业务逻辑是将文本从一种语言翻译成另一种语言。 每种语言都必须有一个Translator类。 我还需要为每种语言使用LanguageTranslation类,它是translate方法的返回对象,它接受参数T 该T应该是OriginalText的子类(例如EnglishText,ChineseText等)。 这就是我奋斗的地方。 你如何编码这个约束?

我创建了以下超类。

 public abstract class Translator  { public abstract  V translate(T originalText); } 

如果我误解了仿制药的概念或者误解了它,请说明。 谢谢。

只需将其添加到您定义Generics的位置:

 public abstract class Translator  { public abstract  V translate(T originalText); } 

顺便说一句,这很令人困惑,因为V定义在您的方法中被覆盖。 为什么不这样做:

 public abstract class Translator  { public abstract V translate(T originalText); } 

编辑:解释为什么你在V上有警告

它完全相同:

 public abstract class Translator  { public abstract  K translate(T originalText); } 

现在在方法中你有3个generics:

  • K运行时确定了LanguageTranslation的子类型
  • T的运行时确定了OriginalText的子类型
  • V运行时确定了Object的子类型(默认约束)