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