sebmafate
Messages postés4936Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention14 février 201437 20 févr. 2007 à 14:00
Bonjour,
je pense que tu n'a pas tout compris aux generics !
en fait, les générics sont là pour éviter d'écrire x fois la même classe avec des types différents... mais aucune relation ne lie les classes entres-elles en fonctionne du type.
En gros : tu peux avoir A : B (A hérite de B)
mais dans ta TaClasse<T> a ses propres "propriétés" (caractéristiques)
Ce n'est pas parce que A : B que TaClasseblog)
Consultant Indépendant
[Microsoft Visual C# MVP]
clemaate
Messages postés5Date d'inscriptionvendredi 24 mars 2006StatutMembreDernière intervention21 février 2007 20 févr. 2007 à 18:31
Bonjour,
en fait j'essaye de transposer ce que en java 1.5 il appelle la "wildcard" .
donc d'aprés ce que tu me dis il m'est impossible d'avoir cette propriété...
Plus précisement ce qui m'interesse c'est d'avoir A:B et donc que list:list (ce qui est possible en java 1.5)
clemaate
Messages postés5Date d'inscriptionvendredi 24 mars 2006StatutMembreDernière intervention21 février 2007 20 févr. 2007 à 21:08
oui oui je vois bien ce que tu veux dire...
en fait je voudrais réaliser ce qui est décrit ci-dessous en java, mais je ne sais pas si cela est possible en c#...
// copiage de la page web
Type de substitution
Problème : pour permettre l'utilisation de tout type, on peut écrire :
<tt>Essai<Object></tt>
Ceci est un leurre !
La classe <tt>Essai</tt> n'acceptera que les <tt>Object</tt>, et non ses sous-classes.
Pour résoudre ce problème, java 1.5 propose le type de substitution (wildcard). Il est noté <tt>?</tt>
<tt>Essai<?></tt>
On peut accéder à ces éléments grâce au type <tt>Object</tt>, mais pas par un autre...
Sous-types génériques
Si seuls les sous-type d'un type donné sont acceptables, on peut limiter à cette hiérarchie par :
<tt>Essai<? extends Type></tt>
Exemple
Dessiner une liste de figures géométriques
public static void dessiner(ArrayList<? extends Figure> figures)
{ for (Figure f : figures) // nouvelle boucle
System.out.println(f); // ici, il est impossible de remplir la liste
}
ArrayList<Figure> figures = new ArrayList<Figure>();
figures.add(new Figure("Rectangle")); // ici on peut remplir la liste
figures.add(new Figure("Cercle"));
figures.add(new Figure("Triangle"));
dessiner(figures);
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 20 févr. 2007 à 21:37
Rhalala le java, j'en garde pas que des bons souvenirs ^^
Sinon pour ce que tu veux faire, si j'ai bien compris ça sera réaliable avec le mot clef where (voire doc)