【发布时间】:2015-03-10 11:35:19
【问题描述】:
这是我试图回答的一个问题:
以下哪些正确使用了断言?
public class Hunt { public static void main(String... args) { int y = 10; assert y > 5; // #1 new Hunt().netant(y); } public void netant(int x) { assert x > 0; // #2 anteater(x); } private void anteater(int x) { assert x > 0; // #3 } }选择:2
选项:
- #1
- #2
- #3
- 尽管正确使用了断言,但程序存在运行时错误
正确答案:1 & 3
说明:不建议使用断言来断言公共方法的参数
答案指出“不建议使用断言来断言公共方法的参数”。但是在上面的代码中,即使 assert 语句用于断言 main() 方法的参数,它也被选为正确答案!
在 main() 方法中使用 assert 语句是否可取?
【问题讨论】:
-
no.... assert 只能在测试类中使用
-
那么选项1是正确的?
-
断言语句不是用于断言
main()的参数,而是在main()内的字段上使用,尽管作为@PhilippSander 你只会在测试期间使用断言——你不会依赖它来正常检查数据。 -
没有一个是正确的。在第一种情况下,它完全没有意义,因为它只是断言代码刚刚完成的某些事情。在其他情况下,它应该是适当的运行时检查,而不是只会让用户感到害怕的东西。
标签: java assertions