2009-08-26 6 views
0

Ich Debuggen die folgenden CodezeilenNetbeans 6.5 Debug-Ausgabe


if (var.getvar2() != var3) { 
      var4.add(var); 
    } else { 
      isNeeded= true; 
      if (incomingPublishedDate.compare(modifiedDate) < 0) { 
       importNeeded = true; 
      } else { 
       var4.add(var); 
      } 
    } 

Hier var.getvar2() und var3 von Long Typ sind. Während des Debuggens, wenn die Bedingung wie

geht
10000 != 10000 

sollte die if-false bewerten. Aber von der ersten if, geht der nächste Schritt über

var4.add(var); 

und der nächste Schritt Over geht zu var4.add(var);

Ist das ein Netbeans Bug? Oder ist es mit dem Vergleich .

Ich verwende Netbeans IDE 6,5

Antwort

2

Sie können keine Objekte vergleichen Wert. Dieser Vergleich wäre nur dann zutreffend, wenn sich die beiden verglichenen Referenzen auf dasselbe Objekt beziehen. Verwenden Sie stattdessen:

if (! var.getvar2().equals(var3)) { 
    ... 
} 
+0

Richtig. Da dies kein Netbeans-Problem ist, handelt es sich um ein Benutzerproblem. – KdgDev

+0

nur zur Bestätigung, warum kommt dann der Schritt von var4.add (var); Gehe zu var4.add (var); in dem anderen Teil? – Ajay

+0

Oh ich sehe was das eigentliche Problem ist. Fügen Sie einen Dummy hinzu System.out.println ("blah"); Zeilen unter beiden addieren und sehen, ob sie tatsächlich vom Code aufgerufen werden. Oder kopieren Sie in den gesamten Funktionskörper, möglicherweise haben Sie ein Problem mit Ihren öffnenden/schließenden Klammern (ich sehe nicht wie). – Zed