Ich habe unter Code und ich habe Break-Punkte auf überschrieben equals()
und hashCode()
Methoden von ContainerBean
platziert. Wenn ich unterhalb der Anwendung im Debug-Modus laufe, stoppt der Debugger bei hashCode()
nur für System.out.println
Zeile und nicht beim Versuch, Element aus List
zu entfernen.Debug equals() und hashCode() in Eclipse
import java.util.ArrayList;
import java.util.List;
public class ListRemovalDriver {
public static void main(String[] args) {
List<ContainerBean> remitClaims = new ArrayList<>();
ContainedBean addedRemit1 = new ContainedBean();
addedRemit1.setRemitId(12345L);
ContainerBean added1 = new ContainerBean();
added1.setRemitBean(addedRemit1);
remitClaims.add(added1);
ContainedBean removedRemit1 = new ContainedBean();
removedRemit1.setRemitId(12345L);
ContainerBean removed1 = new ContainerBean();
removed1.setRemitBean(removedRemit1);
System.out.println("List before valid removal" + remitClaims);
remitClaims.remove(removed1);
System.out.println("List after valid removal" + remitClaims);
}
}
Fehle ich etwas?
Würde überschrieben werden equals()
in ContainerBean
nicht beim Entfernen Element aus der Liste aufgerufen werden?
EDIT
Ich vergaß zu erwähnen, dass hashCode()
und equals()
arbeiten wie erwartet das heißt Elemente wie pro equals()
Logik aber es ist nur Debugger entfernt zu werden, die mich nicht dort nehmen auf Funktion Anrufliste entfernen.
Wie in meinem Code gezeigt, werde ich nicht per Index entfernen, sondern ein Objekt zu entfernen. Das Objekt wird erfolgreich entfernt, aber sein einziger Eclipse-Debugger führt mich bei diesem Ereignis nicht dorthin. –
Ich weiß das, ich habe gerade diesen Punkt hinzugefügt, damit Sie den Unterschied verstehen. – developer