Bonjour,

J'ai une méthode
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>>
Cet objet a un constructeur ayant cette forme:
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) {
Donc j'écris:
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);
Le problème c'est le T.class. Ca ne marche pas.
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
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);
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, message.getClass());
Mais si message est d'une sous-classe de T, est-ce que mon constructeur va être trouvé ?

Donc me voilà encore une nouvelle fois un peu perdu avec les génériques

Merci pour vos suggestions de solutions,

Laurent