Merkwürdiges Verhalten der equals Method

raminS

Mitglied
Hallo,

ich habe seit heute in meinem Programm ein sehr merkwürdigen Fehler. Die equals Methode scheint Objekte als gleich zu betrachen, die Objekte völlig verschiedener Klassen sind und daher natürlich auch andere Variablen und Inhalte haben.
Auf einmal funktionieren die ganzen Methoden der ArrayList, wie contains und index of nicht mehr vernünftig und ich habe keine Ahnung, woher dieses Problem kommt da ich weger die equals Methode noch die hashValue Methode irgendwo überschrieben habe.

Kann mir jemand sagen, wie es zu so einem Fehler kommen kann?


Viele Grüße,
Ramin
 
da kann man sich alles mögliche ausdenken, ich vermute z.B. etwas in Richung: Einfügen mehrerer geplant unterschiedlicher Objekte,
die aber letztlich immer dasselbe ist, Werte werden geändert, dann aber gleich bei allen Objekten in der Liste, weil alle dasselbe nur eine Objekt sind,
oder unterschiedliche Objekte aber statische Attribute -> auch überall gleich

ohne Reproduzierbarkeit, ohne festes komplettes Code-Beispiel kann man darüber kaum ernsthaft reden,
sei dir aber sicher dass es auf der Welt noch keinen gesichterten allgemein bekannten Fall gibt, in dem Java spontan so etwas allgemeines falsch macht,
der Fehler wird bei dir liegen, entweder direkt im Code oder nur in der Interpretation der Ergebnisse
 
Java:
	public void addCollection(final SensorCollection col) {
		if (collection.isEmpty()) {
			col.createSensors();
			sensors = col;
		}
		LogMgmt.ScenarioLog.info("Collection: " + col.getClass().getSimpleName());

		System.out.println("Insert: " + col.name);
		for (SensorCollection cols : collection.values())
			System.out.println("check- " + cols.name + " - " + cols.equals(col));
		collection.put(col.name, col);
	}

Hi,

ja da hast du sicher Recht, dass der Fehler irgendwo bei mir liegt. Nur da ich nichts geändert habe, was direkten Einfluss auf equals haben könnte, kann ich es mir nicht erklären und weiß auch nicht was ich hier angeben könnte. In dem Abschnitt oben sammle ich die Objekte erstmal in einer HashMap. Die for Schleife hat meinen Verdacht bestätigt. Ich bin die Zeilen auch schon mit dem Debugger durchgelaufen und es handelt sie um Objekte mit völlig verschiedenen ObjectIds.
 
ich kann aus deinem Posting kein Ziel herauslesen deshalb zur Sicherheit nochmal:
ohne vollständigen Code habe ich persönlich zumindest nichts weiter zu sagen,

anscheinend tritt das Problem bei dir wiederholt auf, anscheinend ist ein Interface/ eine Oberklasse SensorCollection betroffen,
vielleicht reicht eine oder wenige Subklassen,
du müsstest schon diese Klassen und den vorherigen Befüllungscode der Map posten, eben alles für ein zusammenhängendes Programm,
dann kann man vielleicht etwas klären, noch nicht
 

Zurück
Oben