Bom dia pessoal, eu to com uma duvida bem basica aki
eu construi uma classe aluno e sobrescrevi o metodo equals para comparar usando o atributo nome
public class Aluno {
public String nome;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
@Override
public boolean equals(Object obj) {
Aluno o = (Aluno)obj;
if (o.getNome().equals(this.nome)){
return true;
}else{
return false;
}
}
}
criei uma classe teste
import java.util.ArrayList;
import java.util.List;
public class Teste {
public static void main(String[] args) {
List agenda = new ArrayList();
Aluno a = new Aluno();
a.setNome("a");
agenda.add(a);
a.setNome("b");
System.out.println(agenda.contains(a));
}
}
Esse syso ta me retornando true mesmo com os atributos diferentes.
eu sei resolver esse “problema” e geralmente não crio objetos desse jeito. mas um dia eu tava dando uma mexida aqui e ali e me ocorreu essa duvida alguem sabe o por que?
geralmente quando eu tenho que botar varios objetos da mesma classe num lista ou array eu ponho…
a= new Aluno();
…antes de cada novo objeto (me falem se eu desse jeito esta errrado ou se tiver algum melhor tambem))
Obrigado.