我正在从 K&B 练习考试中获取此代码片段。
public class Later {
public static void main(String[] args) {
boolean earlyExit = new Later().test1(args);
if (earlyExit) assert false; // LINE 5
new Later().test2(args);
}
boolean test1(String[] a) {
if (a.length == 0) return false;
return true;
}
private void test2(String[] a) {
if (a.length == 2) assert false; // LINE 13
}
}
K&B 中的答案指出,LINE-5 和 LINE-13 不恰当地使用断言。我想知道为什么。这是我在阅读 K&B 的断言主题后的观察。
1.我明白,第 5 行不合适,因为它使用断言来验证命令行参数。断言永远不应该用于验证命令行参数。
2.作为回答,它还指出,第 13 行也是不恰当地使用断言。断言中的良好实践表明,您可以使用断言来验证私有方法的参数。所以我的问题是为什么第 13 行不恰当地使用断言。
对此的任何见解都会有所帮助。