3
respostas

Lambda no For Each ?

Boa Noite a todos, estou com uma pequena dúvida, se alguém puder me ajudar serei muito grato! Pq não consigo fazer isso:

empresas.forEach(e -> escritor.println("<li>" + e.getId() + ": " + e.getNome() + "</li>"));

Mas consigo fazer isso:

for(Empresa empresa : empresas){
            escritor.println("<li>" + empresa.getId() + ": " + empresa.getNome()  + "</li>");
        }

No caso o escritor é um PrintWriter, declarado da seguinte maneira:

PrintWriter escritor = resp.getWriter();

As implementações não significam a mesma coisa???

Grato desde já!

3 respostas

Quando você tenta fazer, acontece o que :)? Pq no Java 8, realmente a interface List fornece o método forEach.

segue a stack trace:

type Exception report

message Servlet execution threw an exception

description The server encountered an internal error that prevented it from fulfilling this request.

exception 

javax.servlet.ServletException: Servlet execution threw an exception
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)


root cause 

java.lang.Error: Unresolved compilation problems: 
    e cannot be resolved to a variable
    Syntax error on token "-", -- expected
    e cannot be resolved
    e cannot be resolved

    br.com.alura.gereciador.web.BuscaEmpresa.doGet(BuscaEmpresa.java:38)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)


note The full stack trace of the root cause is available in the Apache Tomcat/7.0.79 logs.

Thiago,

Se for o mesmo problema que o meu talvez esteja relacionado à versão do java que você está utilizando (provavelmente a 1.7 que parece ser a default do projeto gerenciador).

Se estiver utilizando o eclipse, tente clicar com o botão direito sobre o projeto "gerenciador" , depois clique em "Properties". Na janela que abrir selecione "Java Compiler"(lado esquerdo) e no lado direito no campo "Compiler compliance level:" selecione a versão 1.8.

Acredito que após isso seu foreach irá funcionar.

abraço