前面的例子不仅测试了一个不变量,还检查了应用程序控制流的假设。原始switch语句的作者可能不仅假设suit变量总是具有四个值中的一个,而且还总是执行四个case中的一个。它指出了另一个你应该使用断言的一般区域:在你认为不会到达的任何位置放置一个断言。要使用的断言语句是:
assert false;
例如,假设您有一个如下所示的方法:
void foo() {
for (...) {
if (...)
return;
}
// Execution should never reach this point!!!
}
替换最终评论,以便代码现在显示为:
void foo() {
for (...) {
if (...)
return;
}
assert false; // Execution should never reach this point!
}
注意:谨慎使用此技术。如果Java语言规范中定义的语句无法访问,如果您尝试断言未到达,则会出现编译时错误。同样,一个可接受的替代方案就是抛出AssertionError。
我在Java语言规范中找到了这些。控制流不变量是什么意思?为什么需要添加"断言错误;"上述功能块中的语句,由于存在return语句,控件将无法到达。 渴望听到答案。