Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Dúvida no exercício 7 - orientação a objeto

public class TestaFuncionario{

    public static void main(String[] args){

        Funcionario f1 = new Funcionario();
        f1.nomeFuncionario = "Rafael";
        f1.salario = 6000;
        f1.rg = "0987650900";
        f1.nomeDepartamento = "Setor de Desenvolvimento de Software";
        f1.dtEntrada = "09/12/2017";

        f1.mostra();
        f1.recebeAumento(2000);

        Funcionario f2 = new Funcionario();
        f2.nomeFuncionario = "Rafael";
        f2.salario = 6000;
        f2.rg = "0987650900";
        f2.nomeDepartamento = "Setor de Desenvolvimento de Software";
        f2.dtEntrada = "09/12/2017";

        f2.mostra();
        f2.recebeAumento(2000);        

        System.out.println("=======================================");
        if( f1==f2 ){
            System.out.println("são iguais");
        } else {
            System.out.println("são diferentes");
        }
    }

}

Apesar do código ser extenso, minha dúvida seria na comparação do objeto if (f1==f2) ele retorna SÃO DIFERENTES. Eu já usei também a função equals(), mas mesmo assim ainda me retorna essa mensagem. Alguém poderia me ajudar.

Obrigado Rafael

3 respostas

O lá Rafael, se você já implementou o Equals na sua classe de domínio basta, ao invés de utilizar o == utilizar o equals na comparação dos seus objetos:

if( f1.equals(f2) ){
            System.out.println("são iguais");
        } else {
            System.out.println("são diferentes");
        }

Espero ter ajudado. Vlw!

Rafael, a principio, com oo, o == não funciona exatamente como queremos. Você esta comparando objetos referenciados em espaços diferentes da memória. Para utilizar o == ou o equals, você precisa sobreescrever o metodo equals, por exemplo

@Override
public boolean equals(Object obj) {
    Funcionario outroFuncionario = (Funcionario) obj;
    return this.nomeFuncionario .equals(outroFuncionario .nomeFuncionario );
}

Atenção, esse código só compara o nome. Você precisa implementar os outros campos

solução!

Senhores muito obrigado pela ajuda, mas eu ja encontrei a solução.

segue abaixo: Funcionario f2 = f1; . . . Com isso consegui resolver o problema da igualdade. Foi mal, mas sou iniciante na linguagem. Mas mesmo assim obrigado pelo esclarecimento.