2014-04-01 62 views
1

我有這樣聲明的接口:Java泛型約束不匹配編譯錯誤

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

你有

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

問題是,在抽象類中,PK不需要擴展Serializable。要麼改變抽象類的泛型定義,以便PK擴展Serializable,或者從接口中移除該需求。