Один из правильных ответов на экзамен для экзаменатора Java SE 6 на языке OCP:
Вы можете запрограммировать программные утверждения. не выбрасывая
AssertionError
.
Как я могу это сделать?
Один из правильных ответов на экзамен для экзаменатора Java SE 6 на языке OCP:
Вы можете запрограммировать программные утверждения. не выбрасывая
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 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
RuntimeMXBean mx = ManagementFactory.getRuntimeMXBean();
boolean assertionsEnabled = mx.getInputArguments().contains("-ea");
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");
});
}
}
Может быть, помочь кому-то.