我的问题是一般语法问题。正如在this thread中所回答的那样,我创建了抽象泛型超类。
public abstract class Translator <T extends OriginalText, V extends LanguageTranslation> {
public abstract V translate(T originalText);
}
现在,我无法定义子类。
public class ChineseToEnglishTranslator extends Translator<ChineseText, EnglishTranslation> {
@Override
public EnglishTranslation translate(ChineseText text) {
return null;
}
}
Eclipse返回错误:Bound mismatch: The type ChineseText is not a valid substitute for the bounded parameter <T extends OriginalText> of the type Translator<T,V>
。 ChineseText绝对是OriginalText的子类。我想做什么的语法是什么?
答案 0 :(得分:2)
确保ChineseText extends OriginalText
。
我没有收到任何错误,如你所说 ChineseText extends OriginalText
。
绑定不匹配:类型ChineseText不是有效的替代品 有界参数的类型 翻译。
仅当ChineseText
未展开OriginalText
时才会出现此错误。
答案 1 :(得分:2)
由于ChineseText
是OriginalText
的孩子而EnglishTranslation
是LanguageTranslation
的孩子,因此使用通配符Translator
的{{1}}类允许所有人要使用extends
的班级<? extends OriginalText>
。对Translator
<强> EnglishTranslation 强>
LanguageTranslation
<强> ChineseText 强>
public class EnglishTranslation extends LanguageTranslation{
}
<强> OriginalText 强>
public class ChineseText extends OriginalText{
}
<强> LanguageTranslation 强>
public class OriginalText {
}
<强> ChineseToEnglishTranslator 强>
public class LanguageTranslation {
}