1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Não consigo criar método em uma classe abstrata

Boa noite, estou tentando refatorar o código para utilizar herança nos meus DAOs e consequentemente diminuir a duplicação de codigo em um projeto.

Porém estou com dificuldade para criar a classe abstrata. Nas classes atuais tenho um método que praticamente se repete em todos os DAOs, mas não consigo criar uma abstração para o mesmo. O método presente em uma das classes hoje é o seguinte:

public class ClientesDao extends HibernateUtil {
    public static List<Clientes> findAll() {
        try {
            return getSession().createCriteria(Clientes.class).list();
        } finally {
            close();
        }
    }
}

Estou tentando fazer uma classe abstrata da seguinte forma:

public abstract class DAO <E> extends HibernateUtil {
    public List<E> findAll() {
        try {
            return getSession().createCriteria(E.class).list();
        } finally {
            close();
        }
    }
}

É possível utilizar o tipo genérico para me referir a Clientes.class por exemplo? Como posso fazer a abstração desse método? pois a unica coisa que muda nele é o tipo de retorno que eu resolvo facilmente com o tipo genérico na classe abstrata e essa referencia .class (que para ser sincero não sei o que significa, se alguém puder me explicar também agradeço) ?

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java design-patterns hibernate dao herança classe-abstrata ou faça a sua própria pergunta.