有没有办法确定以下方法是完全执行还是中途退回(即第3行)
static int a=0;
static void test(){
if(a>10){
return;
}
a++;
}
该方法是由另一种方法调用的(可能已经被它改变了)
我无法更改方法声明。我正在处理我从其他人创建的java文件创建的对象。我不允许更改原始文件
答案 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
}