Java:关于断言行为的问题

Sim*_*mon 0 java assert

我有这段代码

import java.util.ArrayList;
import java.util.List;

public class AssertTest {
    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        assert(list.add("test")); //<-- adds an element

        System.out.println(list.size());
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

0 
Run Code Online (Sandbox Code Playgroud)

为什么输出列表为空?断言如何表现在这里?先感谢您!

Gur*_*oca 5

您应该使用-ea标志启用断言...例如;

java -ea -cp . AssertTest
Run Code Online (Sandbox Code Playgroud)

使用断言也是副作用最差的地方..


Eri*_*rik 5

永远不要断言任何副作用.在没有启用断言(启用-ea)的情况下运行时,list.add("test")将不会执行.

这是一个好习惯,永远不要断言但是假的,如下:

if (!list.add("test")) {
  assert false;
  // Handle the problem
}
Run Code Online (Sandbox Code Playgroud)