Bonjour,
J'ai une méthode
Cet objet a un constructeur ayant cette forme:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 private itMessageDisplayer<T> createDisplayer(Class<? extends itMessageDisplayer<T>> DisplayerClass, T message) Qui doit créer un un objet de type Class<? extends itMessageDisplayer<T>>
Donc j'écris:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 public static class DefaultNonEditableDisplayer<M> extends JLabel implements itMessageDisplayer<M> { public DefaultNonEditableDisplayer(clComboMessage<M> combo, M message) {
Le problème c'est le T.class. Ca ne marche pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 private itMessageDisplayer<T> createDisplayer(Class<? extends itMessageDisplayer<T>> DisplayerClass, T message) throws ... // On crée le Displayer itMessageDisplayer<T> d = null; java.lang.reflect.Constructor<? extends itMessageDisplayer<T>> c = DisplayerClass.getConstructor(clComboMessage.class, T.class); d = c.newInstance((clComboMessage<T>)this, message);
Est-ce possible d'écrire quelque chose de ce genre ?
J'ai lu dans un autre forum que la suggestion était de remplacer le T.class par une classe plus concrète. Mais pour T, il n'y a aucune restriction sur ce qu'il peut être, donc je devrais remplacer T.class par
J'ai aussi pensé à écrire à la place de T.class
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 java.lang.reflect.Constructor<? extends itMessageDisplayer<T>> c = DisplayerClass.getConstructor(clComboMessage.class, Object.class);
Mais si message est d'une sous-classe de T, est-ce que mon constructeur va être trouvé ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 java.lang.reflect.Constructor<? extends itMessageDisplayer<T>> c = DisplayerClass.getConstructor(clComboMessage.class, message.getClass());
Donc me voilà encore une nouvelle fois un peu perdu avec les génériques
Merci pour vos suggestions de solutions,
Laurent
Partager