Bonjour,
C'est la première fois que je poste sur ce forum.
Mais ce dernier m'a toujours aidé ^^
(j'espère cette fois encore ^^)
Niveau programmation objet fortement typé, j'utilise Java.
Pour un projet je dois utiliser C# (framework 4.0 ^^).
Je sais que les deux ne sont pas très différents mais quand même ^^
(J'ai lu la quasi totalité de la spec ^^')
Je ne lancerai pas de Troll ^^,
les deux ont leurs faiblesses et leurs avantages ^^
Voila mon problème,
J'ai un objet paramétrable (ou générique en C#)
Appelons le «Obj<T>»
J'aimerai stocker plusieurs instances de «Obj»
mais avec des paramètres différents (String, Double, ...)
En Java je sais faire,
En C#, ..., là je bloque =/
Les types paramétrés ne sont pas gérés de la même manière,
Et donc C# ne dispose pas de la «Wildcard» de Java («?»)
Voila en Java ce que ça donnerait :
En C#,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 public class Obj<T> { T obj = null; public Obj(T obj) { super(); this.obj = obj; } public T method() { return obj; } public static void main(String[] args) { Obj<Double> o1 = new Obj<Double>((double) 25.2); Obj<String> o2 = new Obj<String>("coucou"); List<Obj<?>> list = new ArrayList<Obj<?>>(); list.add(o1); list.add(o2); for (Obj<?> obj : list) { System.out.println(obj.method()); } } }
J'ai seulement réussi à les stocker en temps qu'Object.
Il ne perd pas les types,
Mais je dois obligatoirement coder en dur le cast avec le bon type
(pas possible en générique)
Et puis bon, se trimballer avec des Object,
Ça perd tout le charme des templates Oo
Voila, si quelqu'un à une solution je suis preneur ^^
Je ne reste pas bloqué sur un stockage par liste,
Si il y a un autre moyen je testerai volontier.
Merci.
Partager