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

时间:2015-02-05 23:18:03

标签: java return void

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

我有一个方法:

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

我意识到在第二个条件为真之后,即使它将returnVal设置为false,它也不会返回,因为它将进一步执行method2()。有没有办法重构我的代码,以便无论哪个条件为真,我的method1返回returnVal。

感谢。

5 个答案:

答案 0 :(得分:4)

您的方法返回false。就在method2完成之后。

在您返回后,无法强制将方法称为。 (即使有办法实现这一点,也没有意义。如果在method2的调用者执行任何操作之前调用method1,它将与调用{返回之前{1}}。

因为你要问,你可以在调用method2之前执行return语句(排序),如下所示:

method2

但这在语义上等同于你已经拥有的。

答案 1 :(得分:1)

  

它不会返回,因为它会进一步执行method2()

为什么?

是的,在执行method2()后会返回,但这是一个问题吗?只要method2()完成,method1()就会返回false。

如果你想返回然后再做方法,那么你需要在另一个线程中做(这可能是不必要的)。

答案 2 :(得分:0)

method2()运行后,您的方法将返回false。

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

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

答案 3 :(得分:0)

如果method2重定向或关闭某些内容,那么false将不会返回,method2会做什么? 它应该完成method2然后返回到method1并返回false,除非method2对returnVal执行某些操作使其成为真。

另外,你可以只返回true或false,而不是设置一个变量来返回:

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

答案 4 :(得分:-1)

也许你想要这样的东西?



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
       }
}
}