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

Java—如何识别方法是完全执行还是返回,java,methods,return,execution,Java,Methods,Return,Execution,是否有办法确定以下方法是完全执行还是中途返回(即第3行) 该方法已被另一个方法调用。(a可能已被它更改) 我无法更改方法声明。我正在处理一个从其他人创建的java文件创建的对象。我不允许更改原始文件您的方法几乎什么都不做,在本例中,您无法知道该方法是否在完成执行之前返回,但如果您愿意将函数更改为布尔类型,则可以在完成执行时返回true,在不完成时返回false static boolean test() { if(a>10) return false; a++; re

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

该方法已被另一个方法调用。(a可能已被它更改)


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

您的方法几乎什么都不做,在本例中,您无法知道该方法是否在完成执行之前返回,但如果您愿意将函数更改为布尔类型,则可以在完成执行时返回
true
,在不完成时返回
false

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

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

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

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
}

在debugger like下运行代码,并在内部返回语句上设置断点。如果程序在此断点处停止,这显然意味着它将通过该语句返回


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

此方法没有任何作用。如果您了解。。它有助于检查方法是否完全执行..由于逻辑在方法内部的路径无法更改任何内容,因此,没有办法。对于编辑的版本,您可以在方法调用之前和之后检查
a
的值。不清楚您在问什么,因为您没有发布真实的代码,也没有给出所有必要的条件。我无法更改方法声明。我正在处理一个从其他人创建的java文件创建的对象。我不允许更改原件file@PubuduDodangoda那么你就不能了。我不能更改方法声明。我正在处理一个从其他人创建的java文件创建的对象。我不允许更改原始文件。您可以在方法执行前后检查a的值(如果您有权访问该值)。如果该方法只执行了一次,那么如果a的值发生了变化(并且如果a的值在代码的其他地方没有发生变化),则该方法将完全执行。我必须说这样做真的没有多大意义,因为这将是非常糟糕的代码。
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
}