想象一下,你有這樣的情況:Java的泛型返回動態類型
// Marker
interface Type {}
interface CustomType extends Type {
int getSomething();
int getAnotherThing();
}
class CustomTypeImpl implements CustomType {
public int getSomething() {
return 1;
}
public int getAnotherThing() {
return 2;
}
}
在另一類,我想有這樣一個通用的方法:
public <T extends CustomType> T getFromInterface(Class<T> clazz)
返回的實現我輸入參數。例如,我想調用如下的方法:SomeInstanceOfClass.getFromInterface(CustomType.class)
,它返回一個CustomTypeImpl
的實例。
@ EDIT:我忘了提及我有權訪問一個方法,該方法存儲所有可用作方法參數的接口。
此方法的簽名是:public Set<? extends Class<? extends Type>> allTypes()
如何管理做到這一點嗎?
如果接口有兩個實現呢?如果它從來不這樣做,那麼接口的意義何在? –
實際上,我有一個標記接口,允許我的對象具有通用類型。情況就像這樣:interface Type {// marker} interface CustomType extends Type {// look above}和我的實現。實際上,我有擴展Type的其他接口,然後我爲每個擴展Type的接口實現了一個實現。 –
答案可能會解決您的問題,但我認爲無論您的問題是什麼,都可能有更好的解決方案。 –