Contain-funktion überlisten

eclipseworker

Bekanntes Mitglied
Ich habe meine eigene Klasse und eine Liste mit Elementen dieser Klasse. Ich möchte in der Liste abfragen, ob ein gewisses Element vorhanden sind und dafür gewisse Variablen ignorieren. Muss ich über die Liste iterieren oder reicht es in diese Felder in der equals-Methode (und hash) zu ignorien und dann contains zu verwenden?
Beispiel:
Java:
public class MyClass{
     private String irrevleantForEqual;
    private String relevantToEqual;

     public MyClass(){}
      //getters and setters

public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null) {
            return false;
        }
        if (!(obj instanceof MyClass)) {
            return false;
        }
        MyClass other = (MyClass) obj;
         return relevantToEqual.equals(other.getRelevantToEqual());
    }
}
Und dann
Java:
MyClass search=new MyClass();
search.setRelevantToEqual("foo");
boolean scd=myList.contains(search);
Meine Frage wäre scd true auch wenn die Instanz meiner Liste irrevleantForEqual anders gesetzt hat.
(Ja irrevleantForEqual hat seine Berechtigung da zu sein.)
 
Zuletzt bearbeitet:
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (!(obj instanceof MyClass)) {
return false;
}
MyClass other = (MyClass) obj;
return relevantToEqual.equals(other.getRelevantToEqual());
}
}
Du hast einen Fehler in Deiner equals - Methode.
instanceof macht Probleme. Bei einer Unterklasse liefert instanceof true --> keine Gleichheit.

Besser gelöst durch ..

Code:
if ( ! obj.getClass().equals(getClass()) )
      return false;
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben