讓下面的代碼:如何根據其類型泛型調用方法?
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();
}
}
如何升級取決於他的類型的門票(A
,B
),還是等等?
你不喜歡金屬/木頭/汽車的比喻嗎? ;) – aioobe 2010-11-18 13:19:23
不,這是有點差 – barroco 2010-11-18 14:14:25
我看了被引用的另一個問題,並且aioobe是正確的。在這兩種情況下,你似乎都遺漏了一些繼承的概念。爲了進行更新,我只需要訪問「MySuperClass」對象。不管它是'A'還是'B',Java都會使用'update()'實現。 – unholysampler 2010-11-18 14:43:32