[英]How to implement generic interface as a non-generic class Java
我想实现一个基于通用接口的 java class。 我收到错误 class 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);
}
我的 class
@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){}
}
您的界面如何使用泛型,您必须使用通配符实现:
public class GroupDaoImpl implements EntitiesDao<Group> {}
对于 add 方法,您必须按照接口中声明的方式实现,您声明为List ,因此您必须实现为List :
void add(List<?> entity);
执行:
@Override
public void add(List<Group> group) {
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.