Bonjour,

J'ai 2 problèmes avec mes génériques:

1) J'ai trois interfaces: itMessage, itOutMessage et itTriggerMessage.
Les 2 derniers étendent la 1ère.
J'ai deux classes epxortant respectivement des Set<itOutMessage> et Set<itTriggerMessage>:

objOut.ExportAll():
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
public Set<itOutMessage> ExportAll() {
   ...
   }
objTrigger.ExportAll() :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
public Set<itTriggerMessage> ExportAll() {
   ...
   }
Quand j'essaye de construire une liste avec l'ensembles des messages exportés j'ai des warnings:
Comme code j'écris:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
Set<itMessage> m=new TreeSet<itMessage>()
m.addAll(objOut.ExportAll());
m.addAll(objTrigger.ExportAll());
Si j'essaye
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
<T extends itMessage>Set<T> m=new TreeSet<T>()
m.addAll(objOut.ExportAll());
m.addAll(objTrigger.ExportAll());
C'est pas mieux. Qu'est-ce qui cloche ?


2) Ma classe clOutMessage implémente itOutMessage.
J'essaye dans une collection de stocker une liste de classes implémentant itMessage.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
List L<Class<itMessage>>=new ArrayList<Class<itMessage>>();
Si je fais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
L.add(clOutMessage.class)
J'ai une erreur, pourtant clOutMessage implémente itOutMessage qui étend itMessage. Donc clOutMessage implémente itMessage et cela devrait être ok.

Pouvez-vous m'aider à dépatouiller tout ça ?

Marci.