[Dúvida] Comparação usando if

4 respostas
higornucci

Olá, amigos! :D

Venho, mais uma vez, recorrer a ajuda de vocês. É o seguinte: tenho um método que implementa uma ação que deveria preencher um JComboBox com as cidades dependendo da empresa que escolho. Vejam:
private void jcbEstagioActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
        jLabel3.setVisible(true);
        jpCidade.setVisible(true);

        // Pegando a empresa que esta selecionada na JList
        Empresa empresa = listaEmpresa.get(jlEmpresa.getSelectedIndex());
        Long id = empresa.getId();

        //Selecionando todos os serviços para discriminar apenas os serviços da empresa selecionada
        DAO<ServicoPublico> daoS = new DAOFactory().getServicoPublicoDAO();
        listaSP = daoS.listaTudo();

        for(ServicoPublico sp : listaSP) {
            System.out.println(id);
            System.out.println(sp.getEmpresa().getId()+"\n");
            // Se o id da empresa do serviço atual for igual ao id da empresa selecionada no JList então
            if(sp.getEmpresa().getId() == id) {
                // Adiciona a cidade ao JComboBox
                jcbCidade.addItem(sp.getMunicipio());
                System.out.println(sp.getMunicipio());
            }
        }

    }

Contudo, não adiciona a cidade ao JComboBox. Cheguei a mandar imprimir os ids e eles saem iguais, mas não chega nem a entrar no if.

Alguém tem idéia do que eu estou fazendo de errado?

4 Respostas

Poneis123

no if… ao inves de usar sp.getEmpresa().getId() == id utilize:id.equals(sp.getEmpresa().getId()) testa ae =)

é que como vc ta usando Long (classe) vc não consegue comparar com == pois ele compara com o endereço do objeto… então vc precisa comparar os valores nele… esse == poderia ser utilizado caso tivesse usando um tipo primitivo (long)

thiago.correa

Poneis123:
no if… ao inves de usar sp.getEmpresa().getId() == id utilize:id.equals(sp.getEmpresa().getId()) testa ae =)

é que como vc ta usando Long (classe) vc não consegue comparar com == pois ele compara com o endereço do objeto… então vc precisa comparar os valores nele… esse == poderia ser utilizado caso tivesse usando um tipo primitivo (long)

Você consegui sim, a partir do Java 5 você pode comparar Objetos Wrappers como se fossem primitivos.
O que pode ser é que você tenha que revalidar a sua View para que as alterações na sua compo sejam atualizadas na sua janela!

higornucci

Poneis123:
no if… ao inves de usar sp.getEmpresa().getId() == id utilize:id.equals(sp.getEmpresa().getId()) testa ae =)

é que como vc ta usando Long (classe) vc não consegue comparar com == pois ele compara com o endereço do objeto… então vc precisa comparar os valores nele… esse == poderia ser utilizado caso tivesse usando um tipo primitivo (long)

Obrigado, amigo.

Era isso mesmo, agora ta funcionando bunitinho \o/

Até a próxima!

Poneis123

É verdade, esqueci de perguntar… é q eu faço os testes aqui com java 1.4 =( rsrs … mas resolveu.

vlw

Criado 14 de abril de 2010
Ultima resposta 14 de abr. de 2010
Respostas 4
Participantes 3