2014-06-28 35 views
-1

有沒有一種方法,以確定是否執行完全以下方法或通過中途返回(即線3號)爪哇 - 如何識別方法是否完全執行或退回

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

的方法是通過調用另一種方法。(一個可能已被它改變)

我不能改變的方法聲明。我正在處理從其他人創建的java文件創建的對象。我不能改變原有文件

+1

此方法什麼都不做。 –

+1

如果你瞭解這將是更好[的try-catch-finally塊(http://tutorials.jenkov.com/java-exception-handling/basic-try-catch-finally.html)。它可以幫助你檢查是否你的方法完全執行或不執行。 –

+1

由於沒有路徑邏輯可以採取任何方法改變任何內容,不,沒有辦法。 – Keppil

回答

2

你的方法幾乎沒做什麼,並沒有出現在這個例子中你沒有辦法給知道,如果該方法執行完畢之前,但如果回到你願意功能更改爲布爾類型您可以在完成執行時返回true,並且不完整時返回false

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

我無法更改方法聲明。我正在處理從其他人創建的java文件創建的對象。我不允許更改原始文件 –

+0

@PubuduDodangoda然後你根本不能。 –

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

我無法更改方法聲明。我正在處理從其他人創建的java文件創建的對象。我不允許更改原始文件 –

+0

那麼您可以在方法執行前後檢查一個值(如果您有權訪問該值)。如果該方法只執行一次,那麼如果更改的值(並且提供的值的值未在代碼中的其他地方更改),則該方法已完全執行。我不得不說這樣做真的沒有什麼意義,因爲這將是非常糟糕的代碼。 – HyperReud

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

運行代碼在jdb之類的調試器下,並在內部return語句上設置斷點。如果程序停在這個斷點處,這顯然意味着它會通過該語句返回。

爲了讓事情變得更加自動化,您可以嘗試啓動調試器等通過運行一個Java程序,控制調試。這將使該方法適用於更多用例,而不是全部。