有没有办法在Java中禁用短路评估?

前端之家收集整理的这篇文章主要介绍了有没有办法在Java中禁用短路评估?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
说我有这样的代码
boolean ret = a() && b() && c() && d() && e();

只有当所有其他调用a() – d()返回true时,才会调用e().是否可能有一些编译器或JVM选项来禁用短路评估,所以e()将被总是调用,而不管其他函数的结果如何?

基本上我正在做UAT的庞大的系统,需要测试e(),但设置环境和场景,保证所有的a(),b()等返回true是非常痛苦的…

编辑:好的,我猜使用的是AND而不是逻辑的,可以提供一些解决方法,但是理想情况下,我正在寻找一个不需要在源代码中任何更改的解决方案.由于正式和技术原因(正如我所说的系统很大,我们在分期区域之间推广和部署代码并获得签收的过程).这只是为了测试,生产版本需要启用懒惰评估(即使用&&&

验尸报告:

>“正确”答案是:不,没有.
>“有用的”答案:你可以改变&&到&
>“我到底做了什么”答案:远程调试系统,将断点放在表达上,并告诉eclipse运行e()-_-

解决方法

没有用于更改布尔表达式求值语义的编译器或JVM选项.

如果您不能修改源,可能(尽管不保证)选项包括

>创造性地重新创造您通过精心设计来测试的条件
设置前提条件.
>使用模拟对象.
破解编译器
>破解JVM.
>转换字节码.

对不起,这些都比编译器/ JVM选项要困难得多,或修改代码.此外,最后三个选项(以及请求的编译器/ JVM选项或修改源)违反了正确的测试协议,不修改被测试的内容.

猜你在找的Java相关文章