Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.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
方法返回后if语句中的java调用命令_Java_Recursion - Fatal编程技术网

方法返回后if语句中的java调用命令

方法返回后if语句中的java调用命令,java,recursion,Java,Recursion,我有一个方法: public long getAppropriatePMStyleId(Office office, KMLFolder kmlFolder) { Long id = null; KMLFolder folderForStyle = kmlFolder; if (kmlFolder.getParentKMLFolderId() != null) { folderForStyle = kmlFolderServ

我有一个方法:

public long getAppropriatePMStyleId(Office office, KMLFolder kmlFolder) {
        Long id = null;
        KMLFolder folderForStyle = kmlFolder;
        if (kmlFolder.getParentKMLFolderId() != null) {
            folderForStyle = kmlFolderServiceImpl.find(kmlFolder.getParentKMLFolderId());
            getAppropriatePMStyleId(office, folderForStyle);
        } else { 
            id = Long.parseLong(folderForStyle.getId());
        }
        return id;
    }

我在调试器中观察到,在遇到else情况之前,该方法可以正常工作。执行此操作时,传递给该方法的kmlFolder的id将在调试器面板中分配。但是,当我进入突出显示
return id
语句的位置时,应用程序会转到
getpropertipmstyleid(office,folderForStyle)行
并抛出一个空指针。该方法只在应用程序中的一个位置调用,因此我认为不会从外部再次调用它。这里是否有我不理解的Java行为?

if
块中,您进行递归调用,但不处理它返回的内容。您最终
返回id,但
id
已初始化为
null

也许您想返回递归调用返回的内容:

id = getAppropriatePMStyleId(office, folderForStyle);

使
返回id
返回正确的ID。

ID=getpropertypmtyleid(office,folderForStyle)也许?我还建议将
id
的类型从
Long
更改为
Long
。我看不出为什么它需要是对象,这只是在每次递归中导致了一系列的装箱和拆箱。