Bonjour,
Je ne sais pas si mon approche est la bonne et est possible.
Je vous explique ce que je souhaite faire:
Je souhaite faire un composant Swing de type textuel dans lequel l'utilisateur peut introduire des mots (ex des tags) séparés par un séparateur (ex ";"). A chaque saisie du séparateur j'essaye d'identifier un objet d'une liste d'objets connus dont le toString() == le mot introduit. Si je ne trouve pas de correspondant, je crée un nouvel objet et je l'ajoute à la liste des objets connus.
Voilà pour le décor.
Même si Swing n'implémente pas les génériques, j'essaye que mon composant les implémente. Donc ma classe à la tête suivante
Comme je disais plus haut si après saisie du séparateur par l'utilisateur je ne trouve pas d'objet correspondant je vais en construire un.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 public class TagTextField<T> extends ... { public TagTextField(Set<T> availabletags) { ... }
Donc j'aimerais trouver un Constructor pour T prenant une String en entrée.
Problème je n'arrive pas à mêler Reflection et Generic.
En lisant cette FAQ sur les génériques + la javadoc sur java.lang.reflect j'avais cru comprendre qu'en écrivant
mais je reçois systématiquement un NoSuchFieldException.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Field field=this.getClass().getDeclaredField("value") // où le champ value est de type T Type type=field.getGenericType() if (type instanceof Class) Constructor c=((Class)type).getDeclaredConstructor(String.class)
Alors possible, pas possible mon idée ?
Merci,
Laurent
Partager