【问题标题】:Java Generics Bound Mismatch Compilation ErrorJava 泛型绑定不匹配编译错误
【发布时间】:2014-04-01 07:29:38
【问题描述】:

我有一个这样声明的接口:

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”实例时,我在抽象类中有一个错误: Bound mismatch:类型 PK 不是 GenericBo 类型的有界参数的有效替代品

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

【问题讨论】:

    标签: java generics


    【解决方案1】:

    你有

    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;
    
    }
    

    【讨论】:

      【解决方案2】:

      问题是在抽象类中,PK不需要扩展Serializable。要么更改抽象类泛型定义以使 PK 扩展 Serializable,要么从接口中删除该要求。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多