J'ai une classe Foo
avec la sous-classe SubFoo
, une classe de collection FooListing
.Construction d'une classe java générique où T est une classe foo ou une sous-classe de foo
Je veux créer un générique FooListing<T>
où T
est soit Foo
ou une sous-classe de Foo
du libellé de la documentation (sous la rubrique 'Wildcards'), il semble que
public class FooListing<T extends Foo> { ... }
.. .would laissez-moi utiliser FooListing<SubFoo>
, mais pas FooListing<Foo>
, est-ce correct?
D'accord, cela fonctionne dans la pratique, je ne pouvais pas trouver quelqu'un indiquant explicitement celui-ci – brasskazoo
Oui, cela fonctionnera, le T générique deviendra un Foo une fois compilé, donc vous pouvez utiliser n'importe quel T qui étend Foo (ou même Foo lui-même) en raison des règles de l'affrontement Si vous ne le faites pas Définissez n'importe quel supertype pour le paramètre de type générique, il deviendra un objet lors de la compilation, car vous voulez autoriser chaque type pour votre classe, donc il doit être castable à n'importe quel type et seul Object est capable de le servir. – Hurix