Как реализовать универсальный интерфейс как неуниверсальный класс Java - PullRequest
0 голосов
/ 23 октября 2019

Я хочу реализовать класс Java, основанный на универсальном интерфейсе. Я получил класс ошибки GroupDaoImpl должен быть объявлен как абстрактный или реализовать абстрактный метод update ()

Что я делаю не так?

Мой интерфейс

public interface EntitiesDao<T> {
    void add(List<?> entity);
    List<T> getList();
    void update(T entity);
    T findById(Long entityId);
    void delete(Long entityId);
}

Мой класс

@Repository
public class GroupDaoImpl implements EntitiesDao {

    @PersistenceContext
    private EntityManager em;

    @Override
    public void add(Group group) {
        em.persist(group);
    }

    @Override
    public List<Group> getGroupsList() {
        CriteriaQuery<Group> criteriaQuery = em.getCriteriaBuilder().createQuery(Group.class);
        Root<Group> root = criteriaQuery.from(Group.class);
        return em.createQuery(criteriaQuery).getResultList();
    }

    @Override
    public void update(Group group) {
        em.merge(group);
    }

    @Override
    public Group findById(Long groupId) {
        Group group = em.find(Group.class, groupId);
        if (group == null) {
            throw new EntityNotFoundException("Группа с ID = " + groupId + " не найдена");
        }
        return group;
    }

    //удаляет сущность по id
    @Override
    public void delete(Long groupId) {
        Group group = em.find(Group.class, groupId);
        if (group != null) em.remove(group);
        else throw new EntityNotFoundException("Группа с ID = " + groupId + " не найдена");
    }

    public void addStudent(Student student){}

}

1 Ответ

0 голосов
/ 23 октября 2019

Как ваш интерфейс использует универсальный, вы должны реализовать с использованием подстановочных знаков:

public class GroupDaoImpl implements EntitiesDao<Group> {}

И для добавления метода вы должны реализовать, как объявлено в интерфейсе, вы объявляете как Список , поэтому вы должны реализовать как Список :

void add(List<?> entity);

Реализация:

@Override
public void add(List<Group> group) {

}
...