我已按以下方式编写了一个方法:
if (something) {
return 1;
}
the rest of the code
在我看来,该方法返回1,然后执行the rest of the code
。真的可以吗? return
不会停止执行代码。它不是,我怎么强迫一个方法停止?
ADDED
以下是代码(根据要求):
for (int i=availableTime; i>0; i=i-1) {
final int sec = i;
SwingUtilities.invokeLater(new Runnable() {
public void run() {
String lbl = "<html>";
lbl += "</html>";
timeLeftLabel.setText(lbl);
}
});
try {Thread.sleep(1000);} catch (InterruptedException e) {}
parameterFromClientsListener = clientsListener.getValue(userName,parameterToGet);
if (!parameterFromClientsListener.equals("null")) {
output = parameterFromClientsListener;
game.log.fine(userName + " set (by button) " + parameterToGet + " to be equal to " + output + " . [IMPORTANT]");
return output;
}
}
game.log.fine("The partner selection phase is expired.");
// This code is executed if the Submit button was not pressed and the time run out.
if (parameterToGet.equals("partner")) {
tellMyChoice(parameterToGet, this.partnerFromForm, "timer of" + field);
output = this.partnerFromForm;
}
game.log.fine(parameterToGet + " was submitted by timer (not by OK button).");
} else {
output = parameterFromClientsListener;
}
game.log.fine(userName + " set (by timer)" + parameterToGet + " to be equal to " + output + " . [IMPORTANT]");
return output;
}
我运行此代码两次。在每种情况下,我都会生成一个日志文件。在两个日志文件中,我都看到“set(by button)”语句(在return
之前)。但问题是在第二个日志文件中我确实看到“timer of”语句。如果达到“设置(按钮)”,则不应该达到。怎么会这样?我需要提一下,“设置(按钮)”和“计时器”不会出现在我的代码中的任何其他地方(它们只出现一次)。
已添加3
从代码中可以看出,我没有finally
语句。
答案 0 :(得分:13)
这不是真的,return语句将停止以下任何代码。 (唯一的例外是return语句位于try {}块之后,后面有一个finally {}块。
if(0==0){
return;
}
System.out.println("This will not print.");
答案 1 :(得分:10)
return
确实结束了该方法的执行。有一个例外:finally块。在以下情况中,将返回2
public int foo() {
try {
return 1;
} finally {
return 2;
}
}
答案 2 :(得分:0)
返回确实结束了方法的执行。检查您的其他假设。也许代码的其他部分中的某些内容无法正常运行。
答案 3 :(得分:0)
好吧,差不多。返回是否会停止执行代码
一旦遇到返回,方法执行就会停止,并且在执行任何finally子句后将控件传递给调用方法。
int add(int a, int b)
{
try{
if(a == 0)
{
return b;
}
if(b == 0)
{
return a;
}
return a+b;
}
finally
{
System.out.println("Finally");
}
}
在上面的代码中,函数被称为add(0,1),“Finally”仍将被打印。
如何强制方法停止?
OR退出方法的其他方法是什么?
答案 4 :(得分:0)
你写
if (!parameterFromClientsListener.equals("null")) {
output = parameterFromClientsListener;
game.log.fine(userName + " set (by button) " + parameterToGet + " to be equal to " + output + " . [IMPORTANT]");
return output;
}
您正在将字符串(或其他)与字符串"null"
进行比较,如果它们不同则返回。你真的想这样做,而不是parameterFromClientsListener != null
吗?
(虽然这不应该是一个很大的区别,只要parameterFromClientsListener
既不是null
也不是"null"
,如果它是null
,你的版本会给出一个的NullPointerException。)
你真的在日志文件中得到了这个条目吗?如果是这样,你也应该得到回报。
答案 5 :(得分:0)
我想了解观察到的行为是如何可行的。更详细地说,我看到了一种“矛盾”的行为。在我的日志文件中,我看到了return
之前发生的行的输出以及返回后代码生成的输出。所以,我假设return
并没有停止执行程序。正如其他“回答者”在这里正确提到的那样,这种假设是错误的。对行为的解释是微不足道的。我的程序多次运行显示的代码。第一次到达return
语句时,第二次传递它(因为return
在if
语句中)。因此,这就是IO在日志文件中包含这两个语句的原因。