Génériques Java avec compatibilité de classe et d'interface
En Java, créer un objet de classe avec des contraintes spécifiques peut être difficile. Un scénario courant consiste à définir un objet de classe qui étend une classe particulière tout en implémentant simultanément une interface spécifique. Cependant, la réalisation simultanée des deux contraintes à l'aide de génériques a été un point de discorde courant. extends ClassA>
ou
Class extends ClassA>
ne satisfera qu'à une seule exigence et ne parviendra pas à combiner les deux.
Class extends InterfaceB>Solution
Heureusement, les génériques Java permettent plusieurs interfaces ou classes plus interfaces. Pour y parvenir, modifiez la déclaration générique comme suit :
Comme illustré dans le tutoriel Generics de Sun, en ajoutant & InterfaceName pour chaque interface supplémentaire requise, un une combinaison arbitrairement complexe peut être réalisée. Par exemple, la déclaration JavaDoc de Collections#max démontre cette complexité :
La préservation de la compatibilité binaire nécessite ces déclarations complexes.
Class extends InterfaceB>Implémentation avec contraintes de classe et d'interface
Pour implémenter la restriction souhaitée dans une déclaration de variable, placez une limite générique sur une classe :class classB { }
interface interfaceC { }
classe publique MyClass
Class extends InterfaceB>
Les génériques Java offrent des moyens flexibles de créer des combinaisons contraintes de classes et d'interfaces. En comprenant la syntaxe et les limites, les développeurs peuvent exploiter ce pouvoir pour appliquer des exigences spécifiques dans leur code.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3