-1
我有一個方法可以讓我的SDK的使用者將對象從內部存儲中取出。這些對象從一個通用類的基類繼承而來。物體的真實類型是確定性的,只有消費者才知道。該設置是這樣的:java中的通用返回類型返回對象
public class MyBaseClass<T> {
...
}
public class TheBaseClassContainer {
private Map<String, MyBaseClass> container;
public <T extends MyBaseClass> T getOne(String id, Class<T> clazz) {
return clazz.cast(this.container.get(id));
}
}
的想法是,消費者可以簡單地指定他們希望後面的類,我們將處理其餘部分。不幸的是,當我這樣調用方法,以便:
TheBaseClassContainer container = ...;
MyBaseClassSubclass subclass = container.getOne("myId", MyBaseClassSubclass.class);
我得到一個編譯失敗說container.getOne正在返回類型MyBaseClass和分配期望類型MyBaseClassSubclass的對象。這是爲什麼發生?
給出確切的錯誤消息。請注意'MyBaseClass'是通用的。你應該參數化它的使用。 – 2014-09-27 21:40:28