2012-10-23 11 views

Antwort

23

ich diesen

boolean assertOn = false; 
// *assigns* true if assertions are on. 
assert assertOn = true; 

verwenden verwenden sollte ich bin nicht sicher, dass dies die "offizielle" Weg ist.

+0

Das würde aber einen AssertionError auslösen, oder? – Thilo

+4

Jedes Mal, wenn 'true'' false' ist;) –

+1

Ah, lies '=' als '=='. Aha. Klug. – Thilo

18
+1

dies die – bestsss

+1

richtige Antwort Dies vermeidet die mögliche „zufällige Zuweisung“ Warnung, dass kommt mit dem anderen Ansatz. –

+2

Eigentlich aus dem Javadoc: "Beachten Sie, dass diese Methode nicht garantiert, den tatsächlichen Zusicherungsstatus zurückzugeben, der der angegebenen Klasse zugeordnet war (oder sein wird), wenn sie initialisiert wurde (oder wird)." Diese Antwort scheint mir falsch zu sein und Sie sollten Joes Antwort in Betracht ziehen. – FBB

14

Die Oracle Java Tutorial bietet Informationen darüber, wie es zu tun ...

http://docs.oracle.com/javase/7/docs/technotes/guides/language/assert.html

Ein Auszug aus dem Tutorial

7. Warum bieten nicht ein Konstrukt der assert Status abfragen der enthaltenen Klasse?

Ein solches Konstrukt würde Menschen ermutigen, komplexe Behauptung zu verketten, die wir als eine schlechte Sache betrachten. Darüber hinaus ist es zu Abfrage des assert Status oben auf das aktuelle API einfach ist, wenn Sie das Gefühl haben muss:

boolean assertsEnabled = false; 
assert assertsEnabled = true; // Intentional side-effect!!! 
// Now assertsEnabled is set to the correct value 
0
RuntimeMXBean mx = ManagementFactory.getRuntimeMXBean(); 
boolean assertionsEnabled = mx.getInputArguments().contains("-ea");