|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre du Club
![]() Inscription : novembre 2009 Messages : 142 ![]() |
Bonjour voici un code très simple mais je ne vois pas pourquoi çà coince
Meci de votre aide Code :
|
||
|
|
00
|
|
|
#2 | ||
|
Invité de passage
![]() Inscription : juillet 2005 Messages : 8 ![]() |
Bonjour,
si j'ai bien compris ce que tu veux faire, je te propose ceci : Code :
|
||
|
|
00
|
|
|
#3 | |
![]() ![]() |
Citation:
Si tu cherches un type générique auquel on peut assigner n'importe quel objet de type T ou d'un sous-type de T.... Eh ben c'est T, tout simplement. Principe habituel de l'héritage.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher du poisson, il videra le lac et au bout de deux ans son village ne mangera plus jamais. Partagez vos connaissances, mais aussi comment s'en servir. |
|
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() Inscription : novembre 2009 Messages : 142 ![]() |
OK mais alors comment je fais si je souhaite imposer
que les arguments passés à la méthode soient des classes filles de T |
|
|
00
|
|
|
#5 |
![]() ![]() |
Uniquement des classes filles et pas T lui-même ? Tu peux pas. Une méthode par classe fille acceptée.
Bien sûr, une idée simple serait de le faire quand tu choisis T : faire que ce soit une interface, ou une classe abstraite. Comme une interface ou une classe abstraite ne peuvent pas être instanciées, les objets seront forcément de classes filles.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher du poisson, il videra le lac et au bout de deux ans son village ne mangera plus jamais. Partagez vos connaissances, mais aussi comment s'en servir. |
|
|
10
|
|
|
#6 | ||
|
Membre du Club
![]() Inscription : novembre 2009 Messages : 142 ![]() |
Ok pour la question précédente mais ceci est aussi basique et m'ennuie autant
Pourquoi la méthode add() ne fonctionne pas Merci d'avance Code :
|
||
|
|
00
|
|
|
#7 | ||||
|
Membre à l'essai
![]() François DelalleauÉtudiant Inscription : octobre 2012 Messages : 25 ![]() |
Comme d'habitude, je suis pas sur, mais :
Code :
Code :
Code :
List <Personne> al = new ArrayList<Employee>(); |
||||
|
|
00
|
|
|
#8 | ||
|
Expert Confirmé Sénior
![]() ![]() |
Je crois que tu as mal compris comment marche "?" dans les generic.
Ca ne veux pas dire "n'importe quoi", ça veux dire "quelque chose que je ne connais pas". Ainsi quand tu dis que tu as une List<? extends Employee>, tu es occupé de dire au compilateur que la liste contient un type bien précis qui étends Employé MAIS que tu ne connais pas ce type (ça peut être Chef, Ouvrier ou ResponsableSyndicale). Du coup, quand tu appelle la méthode add(T), le compilateur est incapable de connaitre le Type concret accepté et du coup est incapable de dire si le type Employee que tu essaie de passer en paramètre est recevable. Pour expliquer avec un exemple: Code :
Dans le premier on peux lui passer des employés ou des sous type de employé. Dans le deuxième, on peux lui passer un "?" ou un sous type. Et comme on ne connais par définition pas ?, ça limite fortement l'utilisation
__________________
⥀⥁ Чиз faq java, cours java, javadoc. Pensez à et ![]() Laisse entrer le jour après une nuit sombre. Si tu es toujours là, tu n'es pas faite pour mourir. |
||
|
|
30
|
|
|
#9 | ||
|
Membre du Club
![]() Inscription : novembre 2009 Messages : 142 ![]() |
Bonjour Tchize et merci de ton explication complète qui m'a permis d'avancer
J'ai d'ailleurs revu mon code qui marie maintenant GENERICITE et POLYMORPHISME Voic le code , votre avis : Utile ou pas ??? Code :
|
||
|
|
00
|
|
|
#10 | ||
|
Expert Confirmé Sénior
![]() ![]() |
pour info, tu n'es pas obligé de faire ça
Code :
ao contient des outils, des outils sont des personnes (ahem, pas le dire aux syndicats), donc on peux ajouter le contenu de ao dans liste0
__________________
⥀⥁ Чиз faq java, cours java, javadoc. Pensez à et ![]() Laisse entrer le jour après une nuit sombre. Si tu es toujours là, tu n'es pas faite pour mourir. |
||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com