Le soucis avec l'introscpection c'est que c'est couteux et lourd (il faut gérer plein d'exceptions). Alors ça n'est à utiliser que si tu ne peux pas t'en dispenser.
Si tu peux modifier ton diagramme de classe, pourquoi ne pas faire :
1 2 3
| public interface Prototype {
public <T> methode(<T> parametre1,..., <T> parametreN);
} |
1 2 3 4 5
| public final classe Classe1 {
public final <T> methode(<T> parametre1,..., <T> parametreN) {
...
}
} |
1 2 3 4 5
| public final class Classe2 {
public final <T> methode(<T> parametre1,..., <T> parametreN) {
...
}
} |
...
1 2 3 4 5
| public final classe ClasseN {
public final <T> methode(<T> parametre1,..., <T> parametreN) {
...
}
} |
Et ensuite tu crées une factory:
1 2 3 4 5 6 7 8 9 10 11 12
| public final class Factory {
public final static Prototype[] prototypes =
new Prototype[]{
new Classe1(),
new Classe2(),
... ,
new Classen()};
public final static Prototype getInstance(final int i) {
return prototypes[i];
}
} |
et alors tu n'as plus qu'à faire:
Factory.getInstance(i).methode(parametre1,..., parametreN);
Partager