Java - 如何识别方法是完全执行还是返回

时间:2014-06-28 13:34:18

标签: java methods return execution

有没有办法确定以下方法是完全执行还是中途退回(即第3行)

static int a=0;
static void test(){
     if(a>10){
          return;
     }
     a++;
}

该方法是由另一种方法调用的(可能已经被它改变了)

我无法更改方法声明。我正在处理我从其他人创建的java文件创建的对象。我不允许更改原始文件

4 个答案:

答案 0 :(得分:2)

你的方法几乎什么也没做,并且在这个例子中你没有办法知道方法是否在完成执行之前返回,但如果你愿意将函数更改为布尔类型,你可以在完成时返回true执行和false不完整。

static boolean test()
{
  if(a>10)
     return false;
  a++;
  return true;
 }

答案 1 :(得分:1)

jdb之类的调试器下运行代码,并在内部return语句中设置断点。如果程序在此断点处停止,这显然意味着它将通过该语句返回。

为了使事情更加自动化,您可以尝试启动调试器并通过Runtime从Java程序控制调试器。这将使该方法适用于更多用例,而不适用于所有用例。

答案 2 :(得分:0)

您可以使用

void test(int a) {
    if (a > 10) {
        return;
    }
    a++;
    System.out.println("test executed completely!");
}

或者如果您想以编程方式使用该信息

private boolean executedCompletely;

void test(int a) {
    executedCompletely = false;
    if (a > 10) {
        return;
    }
    a++;
    executedCompletely = true;
} 

答案 3 :(得分:0)

使用测试方法时,可以检查它是否完全以这种方式运行:

int initialA = a;
test();
int finalA = a;
if (finalA != initialA) {
    //a has been changed, therefore the method ran completely
} else {
    //a has not been changed, therefore it was not incremented, therefore the method did not run completely
}