Bonjour à tous,
voilà mon problème: j'utilise une API qui me permet d'ajouter des critère dans un objet requête. Voici une présentation de l'interface que je dois utiliser:
Tous les Type1, Type2, Type3... dérivent d'un même type. Appelons le "AbstractType".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public Interface ISelectRequestBuilder { void addBlocType1(Type1 arg); void addBlocType2(Type2 arg); void addBlocType2(List<Type2> arg); void addBlocType3(Type3 arg); void addBlocType3(List<Type3> arg); .... }
Ce que j'essaie de faire, sans succès pour l'instant, c'est un adapteur générique du genre:
J'ai pensé à paramétré ma classe
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
17
18
19
20
21
22
23
24
25
26
27 public Class MonAdapteur implements ISelectRequestBuilder{ private ISelectRequestBuilder adpatee = null; public MonAdapteur(ISelectRequestBuilder adaptee){ this.adaptee = adaptee; } // Les methodes adapatees public void addBlocType2(Type2 arg){ adaptee.addBlocType2(arg); } // La partie adapteur public void addBloc(List<T extends AbstractType> arg){ // Si la liste est null ou vide if (criteres == null || criteres.size() < 1) { // On ne fait rien return; } // Recuperation du premier element pour determiner le type T critere = criteres.get(0); if (critere instanceof Type1) { adaptee.addBlocType1((Type1) critere); } // else if ..... } }
mais je ne voit pas de grande différence
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public Class MonAdapteur<T extends AbstractType> implements ISelectRequestBuilder .... MonAdapteur<Type3> monAdapteur = new MonAdapteur<Type3>(..); .....
Ma question est la suivante: existe-t-il une façon de faire qui permette d'éviter d'utiliser 'instanceof' et d'utiliser le polymorphisme ?
Merci pour votre aide







:
, c'est un adapteur générique du genre:
Répondre avec citation
Partager