Como posso resolver o problema abaixo?
Este código funciona normalmente
Fonte Completo: BaseDAO
@SuppressWarnings("unchecked")
protected Class<T> getObjectClassT() {
objectClass = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
return objectClass;
}
Porém resolvi fazer o seguinte um cache de DAOs, onde adiciono os DAOs e um HashMap e depois só passar um metodo getDAO(…), o erro ocorre quando chamo o meto getDAO do código abaixo, o erro aponta para o código acima:
import java.util.HashMap;
import java.util.LinkedHashMap;
public class FactoryDAO {
private HashMap<Class<? extends BaseDTO>, BaseDAO<? extends BaseDTO>> listDAO;
private static FactoryDAO instance;
public static FactoryDAO getInstance() {
if (instance == null) {
instance = new FactoryDAO();
}
return instance;
}
public FactoryDAO() {
this.listDAO = new LinkedHashMap<>();
}
public void addDAO(BaseDAO<? extends BaseDTO> dao){
if (dao!=null) {
Class<? extends BaseDTO> classeDTO= dao.getObjectClassT();
if (this.listDAO.containsKey(classeDTO)==false){
this.listDAO.put(classeDTO, dao);
}
}
}
public BaseDAO<? extends BaseDTO> getDAO(Class<? extends BaseDTO> classeDTO){
return this.listDAO.get(classeDTO);
}
}
Error: