2012-10-23 68 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"); 
相关问题