Par exemple, j'ai une classe de base Processeur avec une méthode qui renvoie un objet et prend l'objet en tant que paramètre. Je veux l'étendre et créer un StringProcessor qui retournera String et prendra String comme paramètre. Cependant typage covariant est seulement autorisé avec la valeur de retour, mais pas de paramètre. Quelle est la raison de ces limitations?Pourquoi dans la méthode java, la substitution permet d'avoir des types de retour covariants, mais pas des paramètres covariants?
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;
}
}