在 Java 里,assert 是语言关键字,不是方法调用,所以“嵌套”这个说法要看你指的是哪种情况:
可以,但不推荐,也没必要。
assert x > 0 : assert y > 0; // ❌ 错误写法
这是错误的,因为 assert 的第二个部分(错误信息)必须是表达式,而不是语句。
✅ 正确写法:
assert x > 0 : "x must be > 0";
assert y > 0 : "y must be > 0";
或者:
assert x > 0 && y > 0 : "x and y must be > 0";
完全可以,而且很常见。
if (someCondition) {
assert value != null : "value should not be null";
}
for (int i = 0; i < list.size(); i++) {
assert list.get(i) != null : "element " + i + " is null";
}
可以,这是正常设计。
void foo() {
assert preCondition();
}
boolean preCondition() {
assert x > 0;
return true;
}
assert 默认是关闭的
java -ea MyApp
assert 不适合做业务校验
IllegalArgumentException 等| 问题 | 结论 |
|---|---|
| assert 里再写 assert | ❌ 不行 |
| assert 里用逻辑表达式 | ✅ 可以 |
| 在代码块中嵌套 assert | ✅ 可以 |
| assert 调用含 assert 的方法 | ✅ 可以 |
如果你是想问 单元测试(JUnit Assert) 的嵌套,也可以告诉我,那是另一套机制。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。