我有一個看起來像這樣Java通用方法在運行時轉換爲參數類型,有可能嗎?
public static <T extends MyClass, X extends AnotherClass> List<T> (Class<T> aParameter, X anotherParameter)
現在如果AnotherClass是一個抽象類,不具有的getId定義的方法,但擴展了此接口做的每一個類。 (不要問我爲什麼它被設計這是爲什麼呢,我沒有設計的抽象類,而我不能改變它)。
我怎樣才能做這樣的事情
anotherParameter.getId();
我知道我必須將它轉換爲類,但後來我不得不做一切可能的類的instanceof檢查,然後投放。
所以,正確的知道我有類似:
if (anotherParameter instanceof SomeClass)
((SomeClass)anotherParameter).getId(); //This looks bad.
是否可以動態地施放此?到任何anotherParameter在運行時?
注比的不是實現WithId,你可以1)代碼的抽象類'AnotherClassWithId'提供'抽象無效的getId()'2)使你的派生類擴展的是,和3)使你的方法參數'anotherParameter'是輸入'AnotherClassWithId'。這會更簡單,並且對代碼的更改只需更少,但基本思路是相同的。 – gpeche 2010-09-15 18:11:17
謝謝你工作得很好。 – 2010-09-15 22:41:34