java - 有什么更好的方法可以避免 do-while(false);破解Java?

标签 java do-while

当代码流程是这样的时候:

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/

相关文章:

java - 是否可以拦截Java 11 HttpClient请求?

java - 在 JAVA 中保存图像后 RGB 值无法正确更改

c++ - 方法 getline c++ 后 Switch 语句 react 错误

c++ - Char数据类型输入问题

javascript - 简单的 Javascript 提示验证循环不起作用

javascript - 基于函数顺序的不同函数输出

Java Scanner 没有完全读取 .txt 中的每一行

java - 将动态 ArrayList 转换为 Json

C# do while 在字符串中输入大小写字母

java - Jackson:引用非数字数字不一致