首页 > 解决方案 > 不兼容的类型 - 泛型接口和实现

问题描述

我有一个通用接口定义为:

public interface Service<T extends Slicer, E extends Slice> {
}

和一个实现:

public class DynamoDbService implements Service<DynamoDbSlicer, DynamoDbSlice> {
}

如果我尝试实例化DynamoDbService并将其分配给如下类型的变量Service<DynamoDbSlicer, DynamoDbSlice>

public class Test {

    private void test() {
        final Service<Slicer, Slice> service = new DynamoDbService();
    }
}

我收到一个incompatible types错误:

Incompatible types.
Required: Service <Slicer, Slice>
Found: DynamoDbService

作为DynamoDbService实现通用接口,这不应该是好的吗?以下没有泛型的示例按我的预期工作,以及我希望前面的示例如何工作:

public interface ThingInterface {
}

public class Thing implements ThingInterface {
}

private void thingTest() {
    final ThingInterface thingInteface = new Thing();
}

标签: javagenericsinheritancetypes

解决方案


推荐阅读