[Resolvido] O que posso fazer nesse caso

Eis meu primeiro contato com interfaces, por favor, gostaria de saber se é possível fazer algo do tipo sem usar hibernate, … ?
Está dando erro! Quando coloco throws SQLException ele da erro no Override, quando uso try catch não consigo colocar o return dentro, e quando coloco fora, retorna vazio. Obrigado.

[code]public interface Estados {

public List list();

}[/code]

[code]public class EstadosDAO implements Estados {

private DatabaseManager databaseManager = new DatabaseManager();

@Override
public List list() {
    List lista = new ArrayList();
    String sql = "SELECT estado_id, descricao FROM estados";
    try {
        ResultSet rs = databaseManager.getConexao().createStatement().executeQuery(sql);
        while (rs.next()) {
            lista.add(preencheLista(rs));
        }
        return lista;
    } catch (SQLException e) {
        
    }
}[/code]

[quote=therodrigoagostin]Eis meu primeiro contato com interfaces, por favor, gostaria de saber se é possível fazer algo do tipo sem usar hibernate, … ?
Está dando erro! Quando coloco throws SQLException ele da erro no Override, quando uso try catch não consigo colocar o return dentro, e quando coloco fora, retorna vazio. Obrigado.

[code]public interface Estados {

public List list();

}[/code]

Resolução:

[code]public interface Estados {

public List list() throws SQLException;

}[/code]

Como o amigo sugeriu no post anterior, você pode declarar na interface qual exceção disparar.

Neste caso em específico, entretanto, eu sugiro que você encapsule a SQLException em uma exceção não checada. Isto por que as implementações da interface Estados não precisam ser objetos que acessam banco de dados (não há pq vincular esta dependência). Veja:

public class EstadosDAO implements Estados {
    
   private DatabaseManager databaseManager = new DatabaseManager();

   @Override
   public List list() {
      List lista = new ArrayList();
      String sql = "SELECT estado_id, descricao FROM estados";
      try {
         ResultSet rs = databaseManager.getConexao().createStatement().executeQuery(sql);
         while (rs.next()) {
            lista.add(preencheLista(rs));
         }
         return lista;
      } catch (SQLException e) {
         throw new InvalidStateException(e); // ou uma excecao customizada      
      }
   }
}

E outra dica, você não precisa declarar que os métodos são públicos na interface, eles naturalmente são públicos:

public interface Estados {    
   List list();    
}