我是Java的初学者。 所以我有一个问题。
我有一个方法:
public boolean method1() {
if (something) {
returnVal = true;
} else {
returnVal = false;
method2();
}
return returnVal;
}
我意识到在第二个条件为真之后,即使它将returnVal设置为false,它也不会返回,因为它将进一步执行method2()。有没有办法重构我的代码,以便无论哪个条件为真,我的method1返回returnVal。
感谢。
答案 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
}
}
}