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








Répondre avec citation


J'ai mis Object.class. Je verrai ce que ça donne dès que je peux compiler.


Partager