Pessoal, criei dois objetos.
Funcionario func1=new Funcionario();
Funcionario func2=new Funcionario();
Esta seria uma forma correta de compará-los?
if(func1.equals(func2)
Pessoal, criei dois objetos.
Funcionario func1=new Funcionario();
Funcionario func2=new Funcionario();
Esta seria uma forma correta de compará-los?
if(func1.equals(func2)
Depende do que vc considera como igual.
public class A{
public String nome;
public int idade;
public A(String nome, int idade){
this.nome = nome;
this.idade = idade;
}
public static void main(String [] args){
A a = new A("joao",1); // cria um objeto
A b = new A("joao",1); // cria outro com as mesmas caracteristicas
A c = a; // cria uma referencia
System.out.println(a.equals(b)); // compara objetos com as mesmas caracteristicas
System.out.println(a.equals(c)); // compara objeto com uma referencia a ele mesmo
c.idade = 10;
System.out.println(a.idade); // o que sera q vai ser impresso???
}
}
Se vc não sobreescrever o metodo equals, vc vai comparar se os objetos são identicos, isto é, se apontam pro mesmo objeto. como é o caso de a e c. No seu caso, os dois funcionarios seriam diferentes, pois são 2 instancias diferentes do mesmo objeto.
Sugestão - crie uma regra para comparar e implemente um metodo equals
public boolean equals(A a){
return this.idade == a.idade && this.nome.equals(a.nome);
}
ai vc vai dizer puxa, e por que vc usa == e um equals ali?
por que o equals em strings foi preparado para retornar true ou false se as strings possuem o mesmo valor. e == compara entre valores primitivos (e verifica se fazem referencia ao mesmo objeto).
Um erro comum é comparar strings com ==