有没有办法在Java中禁用短路评估?
说我有这样的代码:
boolean ret = a() && b() && c() && d() && e(); 只有当所有其他调用a() – d()返回true时,才会调用e().是否可能有一些编译器或JVM选项来禁用短路评估,所以e()将被总是调用,而不管其他函数的结果如何? 基本上我正在做UAT的庞大的系统,需要测试e(),但设置环境和场景,保证所有的a(),b()等返回true是非常痛苦的… 编辑:好的,我猜使用的是AND而不是逻辑的,可以提供一些解决方法,但是理想情况下,我正在寻找一个不需要在源代码中任何更改的解决方案.由于正式和技术原因(正如我所说的系统很大,我们在分期区域之间推广和部署代码并获得签收的过程).这只是为了测试,生产版本需要启用懒惰评估(即使用&&& 验尸报告: >“正确”答案是:不,没有. 解决方法
没有用于更改布尔表达式求值语义的编译器或JVM选项.
如果您不能修改源,可能(尽管不保证)选项包括: >创造性地重新创造您通过精心设计来测试的条件 对不起,这些都比编译器/ JVM选项要困难得多,或修改源代码.此外,最后三个选项(以及请求的编译器/ JVM选项或修改源)违反了正确的测试协议,不修改被测试的内容. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |