我有以下類別:Java的泛型類可轉讓
public interface ModelObject {
}
public interface Resource {
}
public interface Transformer <F,T>{
}
public interface WrapperFactory {
Transformer<Resource, Wrap<? extends ModelObject>> createMapper();
}
public class Wrap<E extends ModelObject> {
}
public class AbstractBaseTransformer<F,T> implements Transformer<F,T> {
}
public class ConcreteModel implements ModelObject {
}
public class ConcreteTransformer extends AbstractBaseTransformer<Resource, Wrap<ConcreteModel>> {
}
public class ConcreteFactory implements WrapperFactory {
@Override
public Transformer<Resource, Wrap<? extends ModelObject>> createMapper() {
return new ConcreteTransformer();
}
}
的ConcreteFactory不編譯聲稱ConcreteTransformer與返回
Transformer<Resource, Wrap<? extends ModelObject>>
我看不出有什麼錯在這裏不兼容。 ConcreteTransformer結合第一參數資源(同預期),而第二參數綁定到:
Wrap<ConcreteModel>
應結合:
Wrap<? extends ModelObject>
作爲ConcreteModel實現它。
這是發生在Eclipse或JDK? Eclipse編譯器包含一些錯誤。 – gparyani
@dsmog正確的術語是「泛型」(Java),「模板類」(語法上類似,但概念上在C++中概念上非常不同)。 –