2013-09-29 32 views
0

我有一个boolean方法将运行,直到返回true。我有另一种方法在该方法内运行,可以结束它。那可能吗?我在这里或在互联网上没有发现任何东西。这里是我的意思的一个例子:从另一个方法结束一个布尔方法?

public boolean run(...) { 
end(); 
} 

public void end() { 
// do stuff 
return; 
} 

我试图让这个工作一段时间,但不能。我甚至使用布尔方法来结束另一个尝试:

public boolean end() { 
// do stuff 
return true; 
} 

我不能添加其他的回报,否则就会感到困惑。它只会停止end()方法。

它甚至有可能做到这一点?我想要这个的原因是因为我想要一个简单的if语句,其中包含一个方法,它将完成我想要的任何操作,然后结束它。也许还有另一种解决方法?

+1

不,我仍然迷路。当你返回时,你返回到最后一个执行点(即,当'end()'返回时,你返回到'run'方法的末尾)。你在处理什么问题?你有更具体的例子吗? – Makoto

+0

@Makoto 基本上我想要的是,如果某个特定的事情发生在'end()'方法中。它将停止代码在'end()'方法和'run()'方法中运行。 –

+0

如果这是一个错误情况,请抛出异常。否则,你只需要从'end'返回一个'boolean'并且检查'run'中的值来判断'r​​un'是否应该停止。但是,不要使用例外解决方案来实现正常行为,这不是他们的目的。 –

回答

0

你的问题并不完全清楚,但听起来像你想要做一个非本地退出。在这种情况下,在Java中执行此操作的唯一方法是使用Throwables。一种方法可能是这样的:

class Exit extends RuntimeException {} 

public void run() { 
    try { 
     /* Do your stuff, which may or may not entail calling end(). */ 
    } catch(Exit e) { 
     return; 
    } 
} 

public void end() { 
    throw(new Exit()); 
} 
+0

抱歉格式不正确的问题,但基本上我想尽可能少使用代码。我现在有''args.length == 0)msg.args(sender,1);'在'args()'方法中,我有一个return语句,但它不会结束'run( )'方法。 –

+0

当然不是。 'return'只能退出它所在的方法。这就是为什么你需要使用“非本地”退出。 – Dolda2000

+0

啊,我明白了。那么我想我会把它做成一个标准的if语句,而不是用'throw exception'减慢它的速度。 –

相关问题