我想 return 一些东西并执行一些其他方法。 JAVA有什么办法吗?

I want to return something and execute some other method. Is there any way in JAVA?

我是 Java 的初学者。 所以我有一个问题。

我有一个方法:

public boolean method1() {
    if (something) {
        returnVal = true;
    } else {
        returnVal = false;
        method2();
    }
    return returnVal;
}

我意识到第二个条件为真后,即使它会将returnVal设置为false,但它不会return,因为它会进一步执行method2()。有什么方法可以重构我的代码,以便无论哪个条件为真,我的 method1 returns returnVal.

谢谢。

您的方法returnfalsemethod2 刚刚结束。

在您return编辑之后无法强制调用方法。 (即使有办法实现这一点,也没有意义。如果 method2 应该在 method1 的调用者可以执行任何东西之前被调用,那将与调用 method2 在 returning 之前。)

既然你问了,你可以在调用 method2 之前执行 return 语句(有点),如下所示:

try {
    return false;
} finally {
    method2();
}

但这在语义上等同于您已有的内容。

it won't return because it will further execute method2()

为什么?

是的,它会 return 在您执行 之后 method2(),但这是个问题吗?一旦 method2() 完成,那么 method1() 将 return false。

如果你想return然后执行该方法,那么你将需要在另一个线程中执行(这可能是不必要的)。

您的方法将在 method2() 运行 秒后 return 为假。

如果您想使用 method1() 的 return 值来决定是否要 运行 method2(),您可以这样编写代码:

if (!method1()) {
    method2();
}

也许你想要这样的东西?

public boolean method1() {
  if (something) {
    return true;
  }
  return false;
  method2();//This will be dead code
}

还是这样?

public boolean method1() {
 if (something) {
      return true;
}
 else {
   try
     {
    return false; //first return false
       }
   finally
     {
    method2();//then call this
       }
}
}

如果 method2 重定向或关闭某些内容,则 false 不会 return,method2 有什么作用? 它应该完成 method2 然后返回到 method1 和 returns false 除非 method2 对 returnVal 做一些事情使它为真。

此外,您可以 return true 或 false 而不是将变量设置为 return:

public boolean method1() 
{
   if (something) 
   {
      return true;
   }
   else 
   {
    method2();
    return false;
   }
}