有沒有一種方法,以確定是否執行完全以下方法或通過中途返回(即線3號)爪哇 - 如何識別方法是否完全執行或退回
static int a=0;
static void test(){
if(a>10){
return;
}
a++;
}
的方法是通過調用另一種方法。(一個可能已被它改變)
我不能改變的方法聲明。我正在處理從其他人創建的java文件創建的對象。我不能改變原有文件
有沒有一種方法,以確定是否執行完全以下方法或通過中途返回(即線3號)爪哇 - 如何識別方法是否完全執行或退回
static int a=0;
static void test(){
if(a>10){
return;
}
a++;
}
的方法是通過調用另一種方法。(一個可能已被它改變)
我不能改變的方法聲明。我正在處理從其他人創建的java文件創建的對象。我不能改變原有文件
你的方法幾乎沒做什麼,並沒有出現在這個例子中你沒有辦法給知道,如果該方法執行完畢之前,但如果回到你願意功能更改爲布爾類型您可以在完成執行時返回true
,並且不完整時返回false
。
static boolean test()
{
if(a>10)
return false;
a++;
return true;
}
我無法更改方法聲明。我正在處理從其他人創建的java文件創建的對象。我不允許更改原始文件 –
@PubuduDodangoda然後你根本不能。 –
你可以使用
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;
}
我無法更改方法聲明。我正在處理從其他人創建的java文件創建的對象。我不允許更改原始文件 –
那麼您可以在方法執行前後檢查一個值(如果您有權訪問該值)。如果該方法只執行一次,那麼如果更改的值(並且提供的值的值未在代碼中的其他地方更改),則該方法已完全執行。我不得不說這樣做真的沒有什麼意義,因爲這將是非常糟糕的代碼。 – HyperReud
當您使用的測試方法,你可以檢查它是否運行完全是這樣的:
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
}
運行代碼在jdb之類的調試器下,並在內部return語句上設置斷點。如果程序停在這個斷點處,這顯然意味着它會通過該語句返回。
爲了讓事情變得更加自動化,您可以嘗試啓動調試器等通過運行一個Java程序,控制調試。這將使該方法適用於更多用例,而不是全部。
此方法什麼都不做。 –
如果你瞭解這將是更好[的try-catch-finally塊(http://tutorials.jenkov.com/java-exception-handling/basic-try-catch-finally.html)。它可以幫助你檢查是否你的方法完全執行或不執行。 –
由於沒有路徑邏輯可以採取任何方法改變任何內容,不,沒有辦法。 – Keppil