Bonjour à tous,
Je cherche à rendre générique le fait d'analyser des fichiers plats permettant de valoriser plusieurs énumérations dont la forme serait :
Ma problématique est que j'ai une douzaine d'énumérations de ce type et une structure d'analyseur syntaxique à reprendre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 public enum InformationFonctionnelle1 { PREMIERE_VALEUR ("texte1"), DEUXIEME_VALEUR ("texte2"); private static Map<String, InfiormationFonctionnelle1> associations; // Avec le constructeur qui va bien et la méthode statique permettant de récuperer l'énumération en fct de la chaine de caractères // Méthode qui ressemble à ceci : public static InformationFonctionnelle1 deChaine (String chaine) { return associations.get(chaine); } }
L'analyse syntaxique de mon projet se fait notamment par le biais de classes réalisant l'interface suivante :
dont on a par exemple la réalisation suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 public interface Champ<T> { T parse(final String value) throws ParseurException; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public class ChampInteger implements Champ<Integer> { public Integer parse(final String champ) throws ParseurException { if (StringUtils.isNotBlank(champ)) { try { return Integer.parseInt(StringUtils.trim(champ)); } catch (final NumberFormatException e) { throw new ParseurException("Le champ " + champ + " n'est pas un nombre entier"); } } return null; } }
Mon souhait serait d'ajouter une classe ChampEnum<E extends Enum<E>> réalisant le contrat Champ<E extends Enum<E>> (ou plus précisément la même chose où désigne une des quelques énumérations m'intéressant).
Je pensais d'abord mettre en place une interface réalisée par mes énums pour y placer la méthode deChaine... mais étant une méthode statique, ça ne risque pas de fonctionner.
J'ai beau tourner le problème dans tous les sens, je n'arrive pas à trouver une manière de spécifier de façon générique un type disposant d'une méthode statique deChaine(String)
Quelqu'un aurait-il une suggestion ?
Parce que là, je suis à quelques doigts de passer par des conversions explicites type par type ... ce que j'apprécierais d'éviter par soucis de maintenance.
Partager