2012-10-23 7 views

答えて

23

を使用する必要がありますね。

+0

これは、AssertionErrorをスローします。 – Thilo

+4

'true'は' false'です;) –

+1

ああ、 '='を '=='と読んでください。そうですか。賢い – Thilo

18

私はあなたが私はこれが "公式" の方法であることを確認していないこの

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

を使用Class.desiredAssertionStatus()

http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html#desiredAssertionStatus()

+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"); 
関連する問題