I have a parameterized hibernate dao that performs basic crud operations, and when parameterized is used as a delegate to fulfil basic crud operations for a given dao.
You could have the Class passed as a constructor argument.
public class HibernateDao implements GenericDao {
private final Class extends T> type;
public HibernateDao(Class extends T> type) {
this.type = type;
}
// ....
}