Подтвердить что ты не робот

Как программно проверить, включены ли утверждения?

Один из правильных ответов на экзамен для экзаменатора Java SE 6 на языке OCP:

Вы можете запрограммировать программные утверждения. не выбрасывая AssertionError.

Как я могу это сделать?

4b9b3361

Ответ 1

Я использую этот

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

Я не уверен, что это "официальный" способ.

Ответ 3

Учебник Oracle Java Tutorial содержит информацию о том, как это сделать...

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

Ответ 4

RuntimeMXBean mx = ManagementFactory.getRuntimeMXBean();
boolean assertionsEnabled = mx.getInputArguments().contains("-ea");

Ответ 5

package io.github.baijifeilong.tmp;

import io.vavr.control.Try;

/**
 * Created by [email protected] 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");
        });
    }
}

Может быть, помочь кому-то.