Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何告诉java等待对象包含值_Java_Oop_Nullpointerexception - Fatal编程技术网

如何告诉java等待对象包含值

如何告诉java等待对象包含值,java,oop,nullpointerexception,Java,Oop,Nullpointerexception,我知道在java中,在方法中使用变量之前,检查变量是否包含值是一种规范。对于计数小于100的记录列表,代码可以正常执行,但当它增长到大于500时,currentFolder.getFolderObjectID()始终返回NullPointerException。有没有办法告诉我的方法在继续之前等待这个对象包含一个值?提前感谢。看看期货的概念 简言之,未来允许异步执行代码,但关键是(我认为这是您想要的)将暂停/阻止代码执行,直到未来的结果可用 i、 e doSomeStuff(); Future=

我知道在java中,在方法中使用变量之前,检查变量是否包含值是一种规范。对于计数小于100的记录列表,代码可以正常执行,但当它增长到大于500时,
currentFolder.getFolderObjectID()
始终返回
NullPointerException
。有没有办法告诉我的方法在继续之前等待这个对象包含一个值?提前感谢。

看看期货的概念

简言之,未来允许异步执行代码,但关键是(我认为这是您想要的)将暂停/阻止代码执行,直到未来的结果可用

i、 e

doSomeStuff();
Future=executor.submit(new Callable()){
公共整数调用(){
//获取文件夹对象ID的代码
//将在它自己的线程中执行
}
});
继续凝灰岩();
整数folderId=future.get()//可以在此暂停或立即返回。取决于“call()”方法是否已完成。
ContinueOnFolderIDisReturn();

您在哪里为currentFolder分配任何内容?如果没有更多的上下文,我不确定你的问题是否能以任何具体的方式得到回答。我自己会说“使用回电”但是如果我能根据你到目前为止发布的内容找出比这更具体的内容,我会被诅咒的。我需要currentFolder来获取当前选定文件夹的ID,以便在该文件夹上执行删除操作时使用。
private FolderObjectItem currentFolder;

public void deleteFolder() {
    CaseFolderDAO caseFolderDAO = (CaseFolderDAO) Component.getInstance(
            CaseFolderDAO.COMPONENT_NAME, true);
    if (caseFolderDAO.deleteFolder(currentFolder.getFolderObjectID())) {
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();