Donc, je comprends que le suivant ne fonctionne pas, mais pourquoi ne pas travailler?
Adaptateur d'interface<E> {} classe Adaptulator<I> { <E, s'étend Un je & Carte<E>> void ajouter(Classe<E> extl, Classe<A> intl) { addAdapterFactory(nouveau AdapterFactory<E, A>(extl, intl)); } }
L' add()
méthode me donne une erreur de compilation, "Ne peut pas spécifier supplémentaire lié à la Carte<E> lorsque le premier est lié à un paramètre de type" (dans Eclipse), ou "Type de paramètre ne peut pas être suivie par d'autres limites" (dans l'IDÉE), faites votre choix.
Il est clair que vous n'êtes Pas Autorisé à utiliser le paramètre de type I
il y, avant la &
, et c'est tout. (Et avant de vous demander, il ne fonctionne pas si vous passez 'em, car il n'y a aucune garantie que l' I
n'est pas une classe concrète.) Mais pourquoi pas? J'ai regardé par Angelika Langer de la FAQ de et ne pouvez pas trouver une réponse.
Généralement, lorsque certains génériques de prescription semble arbitraire, c'est parce que vous avez créé une situation où le type de système ne peut pas l'application effective de la décision correcte. Mais je ne vois pas ce cas serait de briser ce que j'essaie de faire ici. Je dirais peut-être qu'il a quelque chose à faire avec la méthode de répartition d'après le type d'effacement, mais il n'y a qu'un add()
méthode, de sorte qu'il n'est pas comme si il n'y a aucune ambiguïté...
Quelqu'un peut-il démontrer le problème pour moi?