20

OCP Java SE 6プログラマー模擬試験の正解の1つは、次のとおりです。

をスローせずに、アサーションが有効になっていることをプログラムでテストできますAssertionError

どうやってやるの?

4

6 に答える 6

29

私はこれを使います

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

これが「公式」の方法かどうかはわかりません。

于 2012-10-23T12:03:21.113 に答える
27

私はあなたが使うべきだと思いますClass.desiredAssertionStatus()

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

于 2012-10-23T12:02:12.667 に答える
19

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
于 2012-10-23T12:25:00.377 に答える
2
RuntimeMXBean mx = ManagementFactory.getRuntimeMXBean();
boolean assertionsEnabled = mx.getInputArguments().contains("-ea");
于 2015-12-02T08:52:14.410 に答える
0
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");
        });
    }
}

多分誰かを助けます。

于 2019-09-20T03:45:42.667 に答える
0

jdk.nashorn.internalのAssertsEnabledを使用しています。

System.out.println(AssertsEnabled.assertsEnabled());
// "assertsEnabled()" returns boolean value

多分それは誰かを助けます。

于 2020-06-01T16:47:27.337 に答える