Je suis un peu nouveau dans la fonction Java Generics. Pouvez-vous s'il vous plaît aidez-moi à comprendre pourquoi l'extrait de code ci-dessous ne fonctionne pas:Un problème avec le type de valeur de retour paramétré
interface Response {}
interface Request<T extends Response> {}
class TestResponse implements Response {}
class TestRequest implements Request<TestResponse> {}
<T extends Response> T foo(Request<T> b) {
TestResponse tr = new TestResponse();
return tr;
}
Tout semble bon pour moi: le type de valeur de retour implémente l'interface de réponse, cependant, le compilateur est en désaccord: « Incompatibilité de type: ne peut pas convertir TestResponse à T »
Je pense que vous avez des problèmes avec le mot-clé implements/extends. Dans la méthode, le type T est censé étendre Response, mais votre TestResponse implémente Request (dont le type peut s'étendre de Response). Je pense que vos interfaces et vos caractères joker de type pourraient être faits d'une autre manière. –