当代码流程是这样的时候:
if(check())
{
...
...
if(check())
{
...
...
if(check())
{
...
...
}
}
}
我通常看到这种解决方法可以避免这种困惑的代码流:
do {
if(!check()) break;
...
...
if(!check()) break;
...
...
if(!check()) break;
...
...
} while(false);
有哪些更好的方法可以避免这种变通办法/黑客攻击,使其成为更高级别(行业级别)的代码?
是否有可能来自 Apache commons 或 Google Guava 的结构?
注意:这是the same question for C++的副本.最好的答案是真正的函数指针和 GOTO 命令。两者在 Java 中都不存在。我对 Java 也有同样的兴趣。
将它放入一个新函数中并使用 return 在我看来不是一个好的解决方案,因为 return 会退出该方法。因此,如果我的类有 20 个具有这些构造的方法,我将不得不添加 20 个额外的方法来完成此操作。这就是为什么 GOTO 是 C++ 的最佳答案。
最佳答案
这是什么“while(false)”废话?使用标签!
myLabel: {
if(!check()) break myLabel;
...
...
if(!check()) break myLabel;
...
...
if(!check()) break myLabel;
...
}
它是核心 Java:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html
关于java - 有什么更好的方法可以避免 do-while(false);破解Java?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18529491/