Laissez le code suivant:Comment appeler une méthode en fonction de son type générique?
public abstract class MySuperClass {
public abstract void update();
/* ... */
}
public class A extends MySuperClass {
@Override
public void update() { /* ... */ }
/* ... */
}
public class B extends MySuperClass {
@Override
public void update() { /* ... */ }
/* ... */
}
public class Ticket<T extends MySuperClass> {
private Class<T> c;
public Ticket(Class<T> c){ this.c = c; }
public Class<T> getClass() { return this.c; }
public void update() { /* HOW TO DO! */ }
/* ... */
}
public class Main {
public static void main(String[] args) {
Ticket<A> myTicket1 = new Ticket<A>(A.class);
Ticket<B> myTicket2 = new Ticket<B>(B.class);
myTicket1.update();
myTicket2.update();
}
}
Comment puis-je mettre à niveau les billets en fonction de son genre (A
, B
), ou ainsi de suite? Update() est une méthode d'instance, vous aurez donc besoin d'une instance pour l'appeler.
Vous n'avez plus aimé l'analogie métal/bois/voiture? ;) – aioobe
Non, c'est un peu la différence – barroco
J'ai regardé l'autre question qui a été référencée et aioobe a raison. Dans les deux cas, il semble qu'il vous manque certains des concepts d'héritage. Pour faire une mise à jour, tout ce dont j'ai besoin est d'avoir accès à un objet 'MySuperClass'. Peu importe qu'il s'agisse d'un 'A' ou d'un' B', Java sera l'implémentation de 'update()' à utiliser. – unholysampler