У меня есть интерфейс, объявленный таким образом:
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"? Каков правильный код?
У тебя есть
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;
}
Проблема в том, что в абстрактном классе PK не требуется расширять Serializable. Либо измените общее определение абстрактного класса, чтобы PK расширяет Serializable, либо удаляет это требование из интерфейса.