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