Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

NullPointerException ao acessar a lista de usuários

Estou tentando executar o código que o professor Nico mostrou na aula de autenticação, mas apresenta o erro NullPointerException abaixo:

jan 10, 2020 3:42:10 PM org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet [br.com.alura.gerenciador.servlet.UnicaEntradaServlet] in context with path [/gerenciador] threw exception
java.lang.NullPointerException
    at br.com.alura.gerenciador.modelo.Usuario.ehIgual(Usuario.java:25)
    at br.com.alura.gerenciador.modelo.Banco.existeUsuario(Banco.java:81)
    at br.com.alura.gerenciador.acao.Login.executa(Login.java:24)
    at br.com.alura.gerenciador.servlet.UnicaEntradaServlet.service(UnicaEntradaServlet.java:33)

Fiz um foreach na lista de usuários e imprimi cada um deles na console do Tomcat pra ter certeza de que estava tudo certo, mas percebi que todos os meus usuários estão como "null". Por que isso aconteceu?

package br.com.alura.gerenciador.modelo;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Banco {

    private static List<Empresa> lista = new ArrayList<>();
    private static List<Usuario> listaUsuarios = new ArrayList<>();
    private static Integer chaveSequencial = 1;

    static {
        Empresa empresa1 = new Empresa();
        empresa1.setNome("Alura");
        empresa1.setId(Banco.chaveSequencial++);
        Empresa empresa2 = new Empresa();
        empresa2.setNome("Caelum");        
        empresa2.setId(Banco.chaveSequencial++);
        Banco.lista.add(empresa1);
        Banco.lista.add(empresa2);

        Usuario u1 = new Usuario();
        u1.setLogin("max");
        u1.setSenha("123");
        Usuario u2 = new Usuario();
        u1.setLogin("levi");
        u1.setSenha("123");
        Usuario u3 = new Usuario();
        u1.setLogin("luiz");
        u1.setSenha("123");        
        Usuario u4 = new Usuario();
        u1.setLogin("Maria");
        u1.setSenha("123");

        listaUsuarios.add(u1);
        listaUsuarios.add(u2);
        listaUsuarios.add(u3);
        listaUsuarios.add(u4);

        System.out.println("Executando um 'for' para percorrer a listaUsuarios:");
        for (Usuario usuario : listaUsuarios) {
            System.out.println(usuario.getLogin() + " | " + usuario.getSenha());
        }

    }

Segue abaixo o resultado dos sysouts:

Executando um 'for' para percorrer a listaUsuarios:
Maria | 123
null | null
null | null
null | null
1 resposta
solução

Pessoal, tentei encontrar uma forma de fechar o tópico, mas não encontrei.

O problema estava ns sets login e senha dos objetos do tipo usuário. Acabei dando "ctrl+c" e "ctrl+v" e não troque as referências, permanecendo todas em "u1".

Agradeço a quem entrou no tópico para tentar ajudar.

Abraços!