У меня есть несколько классов, которые выглядят так:
MODEL
public abstract class BaseEntity<O extends Object> { ... }
public class Person extends BaseEntity<Person> { ... }
COMMAND
public abstract class BaseCommand<BE extends BaseEntity<BE>> { ... }
public class PersonCommand extends BaseCommand<Person> { ... }
СЕРВИС
public interface BaseService<BE extends BaseEntity<BE>> {
public BE create(BaseCommand<BE> command);
}
public interface PersonService extends BaseService<Person> { ... }
SERVICE IMPL
public abstract class BaseServiceImpl<BE extends BaseEntity<BE>> implements BaseService<BE> { }
public class PersonServiceImpl extends BaseServiceImpl<Person> implements PersonService {
public Person create(PersonCommand personCommand) { ... }
}
Класс PersonServiceImpl
не будет компилироваться. Не признается, что метод create()
реализует метод create()
из интерфейса BaseService
. Кто-нибудь может сказать, почему PersonCommand
не распознается как BaseCommand<BE>
(в списке параметров)?