OCP Java SE 6プログラマー模擬試験の正解の1つは、次のとおりです。
をスローせずに、アサーションが有効になっていることをプログラムでテストできます
AssertionError
。
どうやってやるの?
私はこれを使います
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()
Oracle Javaチュートリアルでは、その方法に関する情報が提供されています...
http://docs.oracle.com/javase/7/docs/technotes/guides/language/assert.html
チュートリアルからの抜粋
7.含まれているクラスのassertステータスを照会するための構造を提供しないのはなぜですか?
このような構造は、複雑なアサーションコードをインライン化するように人々を促しますが、これは悪いことだと考えています。さらに、次のことを行う必要があると思われる場合は、現在のAPIでアサートステータスを照会するのは簡単です。
boolean assertsEnabled = false; assert assertsEnabled = true; // Intentional side-effect!!! // Now assertsEnabled is set to the correct value
RuntimeMXBean mx = ManagementFactory.getRuntimeMXBean();
boolean assertionsEnabled = mx.getInputArguments().contains("-ea");
package io.github.baijifeilong.tmp;
import io.vavr.control.Try;
/**
* Created by BaiJiFeiLong@gmail.com at 2019-04-18 09:12
*/
public class TmpApp {
public static void main(String[] args) {
Try.run(() -> {
assert false;
}).onSuccess($ -> {
throw new RuntimeException("Assertion is not enabled");
});
}
}
多分誰かを助けます。
jdk.nashorn.internalのAssertsEnabledを使用しています。
System.out.println(AssertsEnabled.assertsEnabled());
// "assertsEnabled()" returns boolean value
多分それは誰かを助けます。