2016-01-13 67 views
-3
private FolderObjectItem currentFolder; 

public void deleteFolder() { 
    CaseFolderDAO caseFolderDAO = (CaseFolderDAO) Component.getInstance(
      CaseFolderDAO.COMPONENT_NAME, true); 
    if (caseFolderDAO.deleteFolder(currentFolder.getFolderObjectID())) { 

我知道這是在Java規範來檢查變量,如果它包含一個值,才能在你的方法使用它。該代碼執行正確的記錄列表,如< 100的計數,但當它增長到> 500時,currentFolder.getFolderObjectID()總是返回NullPointerException。有沒有辦法告訴我的方法在繼續之前等待這個對象包含一個值?提前致謝。如何告訴Java等待對象包含價值

+0

你在哪裏分配什麼currentFolder?沒有更多的上下文,我不確定你的問題能夠以任何特定的方式回答。 –

+0

我自己,我會說「使用回撥」,但如果我能夠根據您迄今發佈的內容來弄清楚如何給出比此更具體的內容,我將會被定罪。 –

+0

我將需要currentFolder獲取當前選定文件夾的ID,以便在該文件夾上執行刪除操作。 – Gendric

回答

0

看看期貨的概念。

簡而言之,Future允許異步執行代碼,但關鍵性的(這是我認爲你想要的)會暫停/阻止代碼的執行,直到未來的結果可用。

doSomeStuff(); 
Future future = executor.submit(new Callable<Integer>() { 
    public Integer call() { 
     //code to get Folder Object ID 
     //will execute in it's own thread 
    } 
}); 
continueDoingStuff(); 
Integer folderId = future.get(); //Could pause here or return imidiately. Depends if the "call()" method has finished. 
continueOnceFolderIdIsReturned(); 
+0

這些代碼適合我!謝謝@Slihp – Gendric