爲內部使用製作一個API,我需要一些Java抽象,我不知道該怎麼做。鑄造派生Java接口(泛型)的集合
- 有一個接口A與派生接口。
- 假設A的其中一個擴展接口被稱爲B。
- 假設有一個類C實施B。
我有一個工廠/池類˚F從中我想實例(或一組或類似的集合)的列表。 我想基本上是這樣的:
List<B> instances = F.getAllSuitableInstances(parameters);
給我通過我的參數指定爲B的集合
第一次嘗試使用此函數簽名
的所有實例
public List<A> getAllSuitableInstances(parameters);
但是當我嘗試將結果列表轉換爲列表以供使用時,我會告知 「不兼容的類型」 - 即使B是派生的從A
d所以我試了一下Java庫做:
public <T> List<T> getAllSuitableInstances(parameters, T);
,並嘗試調用以b作爲第二個參數。但這也不起作用 ,因爲T由於某種原因必須作爲實例提供,並且接口不能有實例。
我知道我可以使用<?>
進行鑄造,但我希望將它作爲類型安全。
那麼,完成這件事的最好方法是什麼?
你是對的工作 - 回答上面的回答我的引用以及問題。但我沒有找到其他問題,因爲我沒有找到它的關鍵字(狗,動物,多態)。也許其他人會更像我這樣做他們的搜索,所以這個問題的存在可能仍然有用。 – foo