List

Pessoal, estou tendo um problema e não sei mais como resolver

public class ClienteDAO {
private Session session;
public ClienteDAO() {
// TODO Auto-generated constructor stub
}

public List listar(){
	session = Hibernate_Utility.getSessionFactory().openSession();
	session.beginTransaction();
	List list =  (List)session.createQuery("from cliente").list();
	session.getTransaction().commit();
	return list;
}

}

public static void main(String[] args) {
// TODO Auto-generated method stub
ClienteDAO clienteDAO = new ClienteDAO();
List listar = clienteDAO.listar();
for(Cliente cli : [color=red]listar[/color]){
System.out.println(cli.getId_Cliente()+"-"+cli.getNome());
}

}

}

Mensagem de Erro
Exception in thread “main” java.lang.Error: Unresolved compilation problem:
Can only iterate over an array or an instance of java.lang.Iterable

at Factory.Principal.main(Principal.java:35)

o retorno do listar deve ser uma lista generica:

http://java.sun.com/j2se/1.5.0/docs/guide/language/foreach.html

http://www.developer.com/java/other/article.php/3343771

ou seja:

public List<Cliente> listar(){

A sua iteracao nao funciona pq a sua lista nao é tipada.

Se sua lista fosse algo como “List list = new ArrayList()” ai sim ele conseguiria iteram em objetos “Cliente”

Visto que vc nao tipou, pode fazer 2 coisas:

for (Object objeto: lista) {
    Cliente cliente = (Cliente) objeto
    //continua logica
}

Ou

Iterator itClientes = lista.iterator();
while (itClientes.hasNext()) {
    Cliente cliente = (Cliente) itClientes.next();
    //continua logica
}

Valeu Demais, que deus dobre seu conhecimento

[quote=LuizAvila]o retorno do listar deve ser uma lista generica:

http://java.sun.com/j2se/1.5.0/docs/guide/language/foreach.html

http://www.developer.com/java/other/article.php/3343771

ou seja:

public List<Cliente> listar(){
[/quote]