0

我的问题是一个通用的语法问题。正如在这个线程中回答的那样,我创建了抽象泛型超类。

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 的子类。我想要做什么的语法是什么?

4

2 回答 2

2

确保ChineseText extends OriginalText.

如您所说,我没有收到任何错误if ChineseText extends OriginalText

边界不匹配:ChineseText 类型不是 Translator 类型的有界参数的有效替代品。

仅当ChineseText不扩展时才会出现此错误OriginalText

于 2013-09-26T13:20:56.433 回答
2

由于ChineseTextis child ofOriginalTextEnglishTranslationis child of LanguageTranslationTranslator使用通配符的类extends允许所有类<? extends OriginalText>使用Translator。以同样的方式为LanguageTranslation

英文翻译

public class EnglishTranslation extends LanguageTranslation{

}

中文文本

public class ChineseText extends OriginalText{

}

原文

public class OriginalText {

}

语言翻译

public class LanguageTranslation {

}

中译英翻译

public class ChineseToEnglishTranslator extends Translator<ChineseText, EnglishTranslation> {

@Override
public EnglishTranslation translate(ChineseText originalText) {
    return null;
}  
}
于 2013-09-26T13:22:32.510 回答