2013-07-29 20 views
10

Warum liefert meine assert-Anweisung kein Ergebnis? Ich denke, die erste Assert-Anweisung sollte fehlschlagen, aber ich sehe nichts auf Eclipse angezeigt.Java-Assertion-Fehler löst keinen Fehler aus

Ich verwende Eclipse, um dieses Programm auszuführen.

package java.first; 

public class test { 
    public static void main(String[] args) throws Exception { 
    String s = "test1"; 
    assert (s == "test"); 
    s = "test"; 
    assert (s == "test"); 
    } 
} 

Antwort

7

Sie haben damit Behauptungen mit dem -ea Argument (kurz für -enableassertions).

in Eclipse:

  • der rechten Maustaste auf das Projekt, dann "Ausführen als""Run Configurations ..."
  • Wählen Sie die "Argumente" Registerkarte
  • Setzen Sie -ea in die "VM Argumente" Feld.
  • Select "Übernehmen"

Jetzt sollten, läuft eine AssertionError verursachen.

18

Sie müssen die -ea (Zusicherungen aktivieren) in Ihren JVM-Optionen festlegen.


Unrelated, aber man fast immer wollen string1.equals(string2) statt ==.

+0

auf das zu erarbeiten, können Sie den '' == Operator verstehen, wie es die folgende Frage beantwortet: der Verweis auf dieses Objekt verweist auf den gleichen Bezug dieses anderen Objekts ? sind diese 2 Leute im gleichen Speicherstück zugeordnet, was nur wahr ist, wenn es 1 und nur 1 Instanz eines solchen Objekts im gesamten Kontext Ihrer Anwendung (Singleton) gibt. Mit anderen Worten ist eine Instanz eines Objekts nur '==' zu sich selbst. Da Sie es mit einer anderen Instanz vergleichen, die den gleichen Wert enthält, müssen Sie die Gleichheits-Methode verwenden, wie oben angegeben. – VallaDanger

+0

Wenn Sie '' sagen (s == "test") 'erstellen Sie tatsächlich eine neue Instanz von String mit dem Wert' test', also fragen Sie, ob diese neue Instanz '==' zu 's' absolut nicht wahr ist 'es sei denn, Sie verwenden die' String.intern() 'Methode, die sicherstellt, dass alle Zeichenfolgen mit denselben Werten denselben Speicher teilen. Es gibt tatsächlich viel mehr über Gleichheit der Objekte zu wissen, Grund, warum ich empfehlen würde, effektive Java (2. Auflage, Kapitel 3, Punkt 8) eine Chance zu geben. – VallaDanger

1

Sie müssen es aktivieren, indem Sie -ea Argument verwenden.

4

Sie müssen die Aktivierungsprüfung zur Laufzeit aktivieren. Die Oracle-Dokumentation für Java heißt es:

Damit Behauptungen in verschiedenen Körnungen, verwenden Sie die -enableassertions oder -ea, Schalter. Verwenden Sie den Schalter -disableassertions oder -da, um Assertionen mit verschiedenen Granularitäten zu deaktivieren.

Ausführliche Informationen auf der Oracle-Website unter http://docs.oracle.com/javase/1.4.2/docs/guide/lang/assert.html#enable-disable

Um die Laufzeitoptionen für Programme in Eclipse laufen ändern müssen Sie mit den Parametern von Eclipse läuft das Programm ändern. Wie dies zu tun, wird je nach Ihrer Version von Eclipse variieren, aber hier ist, wie es in Eclipse Europa funktioniert ...

  • Öffnen Sie das Dialogfeld ausführen (dies sollte eine Option unter dem Menü „Ausführen“ sein).
  • Klicken Sie auf die Registerkarte "(x) = Argumente."
  • Geben Sie in das Feld für "VM-Argumente" -ea ein, um Assertionen zu aktivieren.
  • Klicken Sie auf die Schaltfläche "Übernehmen".

Antwort „ausgeliehen“ von http://www.coderanch.com/t/416987/vc/enable-Assertions-eclipse

Verwandte Themen