我的階級結構是這樣的:Java的泛型類型的推斷
class A1,A2,..,An extends A;
class B1,B2,..,Bn extends B;
而且類轉換成Ai
Bi
:
private B1 convert(A1 a1){}
...
private Bn convert(An an){}
我如何定義與像<? extends B> convert(<? extends A> a)
簽名單一的公共方法? 現在我只有這種方法:
B convert(A a){
if(A.getClass().equals(A1.class)){
return convert((A1)a);
}...
}
我能使用的instanceof如果性能比較是重要的,該方法將被頻繁調用?
只是一個想法:IMHO更優雅的解決方案將是在'A'中聲明一個方法[最好是抽象的,如果'A'是抽象的]:'public B toB()',這將從調用者創建一個'B'實例。 – amit 2012-07-17 09:21:01
就這麼簡單!謝謝!爲什麼我沒有想到它? – 2012-07-17 09:36:13
由於它似乎可以幫助您,因此我將其添加爲代碼捕捉的答案。很高興我能幫上忙。 – amit 2012-07-17 09:42:01