Java утверждают, дает странные результаты - PullRequest
3 голосов
/ 17 июля 2009

что должен делать следующий код Java?

public class foo{
    public static void main(String[] args){
        boolean mybool=false;
        assert (mybool==true);
    }
}

Должно ли это вызвать ошибку подтверждения? И если нет, то почему? (Я не получаю никаких ошибок!)

Ответы [ 4 ]

4 голосов
/ 17 июля 2009

При запуске программы вы должны включить утверждения в Java VM, добавив '-ea' в командную строку:

java -ea -jar myprogram.jar
1 голос
/ 17 июля 2009

Утверждения на языке Java странные. Вы должны включить их при запуске командной строки, и мне это не нравится.

По этой причине я склонен использовать сторонние библиотеки для своих утверждений. Apache Commons Lang (через класс Validator), Spring (через класс Assert) или даже JUnit4 (через класс Assert) предоставляют эту функциональность, и она будет работать независимо от настроек виртуальной машины. Когда вы используете статический импорт Java5, они так же просты в использовании, как и утверждение Java, плюс они более гибкие и позволяют указывать сообщение об ошибке в исключении.

0 голосов
/ 17 июля 2009

Это делает информацию, если утверждения включены в программе.

Если утверждения отключены (это значение по умолчанию), оператор утверждений не будет выполняться, а mybool будет иметь значение false.

если утверждения включены (аргумент jvm -ea), утверждение будет выполнено и побочным эффектом mybool будет присвоено значение true.

Вы можете использовать это для принудительного включения или отключения утверждений. Например, у меня есть Test в моих TestSuites, который завершается ошибкой, если утверждения не включены, чтобы убедиться, что утверждения всегда включены при выполнении тестов.

0 голосов
/ 17 июля 2009

Это должен быть бросок AssertionErors.

Вам нужно включить утверждения, если вы используете Eclipse. По умолчанию они отключены.

Для этого добавьте -ea к аргументам JVM.

...