2012-10-23 74 views

回答

23

我用這個

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

我不知道這是 「官方」 的方式。

+0

這會拋出一個AssertionError,但是,對嗎? – Thilo

+4

每次'true'都是'false';) –

+1

啊,讀'='爲'=='。我懂了。聰明。 – Thilo

18
+1

這是正確的答案 – bestsss

+1

這避免了來自可能的「意外分配」警告與另一種方法。 –

+2

實際上,從javadoc:「請注意,此方法不能保證返回當(或將要)初始化時指定的類與(或將要)關聯的實際斷言狀態。」所以這個答案對我來說似乎不正確,你應該考慮喬的回答。 – FBB

14

Oracle的Java教程提供了有關如何做到這一點的信息...

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

從教程

7.摘錄爲什麼不提供一個構造查詢斷言狀態包含類的?

這樣的構造會鼓勵人們內聯複雜的斷言 代碼,我們認爲這是一件壞事。此外,它是簡單的 查詢當前API之上的斷言狀態,如果你覺得你必須:

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"); 
相關問題