Réalisation d'un 'adapteur' générique
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 :evilred::
Code:
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);
....
} |
Tous les Type1, Type2, Type3... dérivent d'un même type. Appelons le "AbstractType".
Ce que j'essaie de faire, sans succès pour l'instant :aie:, c'est un adapteur générique du genre:
Code:
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 .....
}
} |
J'ai pensé à paramétré ma classe
Code:
1 2 3 4
| public Class MonAdapteur<T extends AbstractType> implements ISelectRequestBuilder ....
MonAdapteur<Type3> monAdapteur = new MonAdapteur<Type3>(..);
..... |
mais je ne voit pas de grande différence :pleure:
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