我有这段代码
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());
}
}
输出:
0
为什么输出列表为空?断言如何表现在这里? 提前谢谢!
答案 0 :(得分:5)
您应该使用-ea标志启用断言...例如;
java -ea -cp . AssertTest
同样使用断言是副作用最糟糕的地方..
答案 1 :(得分:5)
永远不要断言任何有副作用的东西。如果在未启用断言的情况下运行(使用-ea
启用),则不会执行list.add("test")
。
这是一个好习惯,永远不要断言任何东西,除了假,如下:
if (!list.add("test")) {
assert false;
// Handle the problem
}
答案 2 :(得分:0)
需要启用断言。使用-ea开关启用它们。
答案 3 :(得分:0)
你必须启用断言。即以 java -ea AssertTest
运行答案 4 :(得分:0)
附带您的问题 - 断言不应包含正确操作程序所需的代码,因为这会导致正确的操作取决于是否启用了断言。
答案 5 :(得分:0)
断言方法,用于检查布尔表达式是true还是false。如果表达式的计算结果为true,则表示没有效果。但是如果它的计算结果为false,则assert方法打印堆栈跟踪并且程序中止。在此示例实现中,使用字符串的第二个参数,以便可以打印错误原因。