Java泛型绑定不匹配编译错误

时间:2014-04-01 07:29:39

标签: java generics

我有一个以这种方式声明的接口:

public interface GenericBo<T, PK extends Serializable> {

 public ResultObject create(T newInstance);
...
}

以这种方式声明的抽象类:

public abstract class GenericServiceImpl<T, PK> implements GenericService<T, PK> {

    private final GenericBo<T, PK> bo;

    ......
    ......
    }

但是在声明'bo'实例时我在抽象类中有错误: 绑定不匹配:类型PK不能替代GenericBo

类型的有界参数

应如何声明“GenericBo bo”实例?什么是正确的代码?

2 个答案:

答案 0 :(得分:2)

你有

class GenericBo<T, PK extends Serializable>

所以当你宣布

private final GenericBo<T, PK> bo;

PK必须延伸Serializable

但是

class GenericServiceImpl<T, PK>

没有这样的限制。你需要添加它。

public abstract class GenericServiceImpl<T, PK extends Serializable> implements GenericService<T, PK> {

    private final GenericBo<T, PK> bo;

}

答案 1 :(得分:1)

问题是在抽象类中,PK不需要扩展Serializable。更改抽象类通用定义,以便PK扩展Serializable,或从接口中删除该需求。