例如,我有一个处理器基类,其方法返回一个对象并将对象作为参数。我想扩展它并创建一个 StringProcessor,它将返回 String 并将 String 作为参数。然而,协变类型只允许使用返回值,而不是参数。这种限制的原因是什么?
class Processor {
Object process (Object input) {
//create a copy of input, modify it and return it
return copy;
}
}
class StringProcessor extends Processor {
@Override
String process (String input) { // permitted for parameter. why?
//create a copy of input string, modify it and return it
return copy;
}
}