Как объект класса использует методы дженерика?

Есть дженерик класс c методом, который возвращает объект с определенным id:

public abstract class GenericHibernateDao<E> implements Dao<E> {
    public static final Logger LOG = LogManager.getLogger(HibernateRoleDao.class);
    private final Class<E> type;

    public GenericHibernateDao(Class<E> type) {
        super();
        this.type = type;
    }

    @Override
    public E findById(Long id) {
        E entity;
        try (Session session = HibernateSessionFactory.getSessionFactory().openSession()) {
            entity = session.get(type, id);
        } catch (Exception e) {
            LOG.error(e.getMessage());
            throw new RuntimeException(e);
        }
        return entity;
    }

Также есть класс, наследующий дженерик и передающий через конструктор информацию о типе:

public class HibernateUserDao extends GenericHibernateDao<User> implements UserDao {
    
    public HibernateUserDao() {
        super(User.class);
    }

Вопрос: что происходит при создании объекта класса HibernateUserDao, что я могу использовать метод findById(Long id) и находить именно юзеров? B объект класса HibernateUserDao как-то копируется метод из дженерик класса с уже подставленным значением type?


Ответы (0 шт):