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

时间:2014-01-13 18:14:11

标签: java recursion

我有一个方法:

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语句的位置时,应用程序将转到行getAppropriatePMStyleId(office, folderForStyle);并抛出空指针。该方法仅在应用程序的一个位置调用,因此我不认为它是从外部再次调用的。是否有一些我不理解的Java行为?

1 个答案:

答案 0 :(得分:2)

if块中,您进行递归调用,但不对其返回的内容执行任何操作。您最终return id;,但id已初始化为null

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

id = getAppropriatePMStyleId(office, folderForStyle);

以便return id;返回正确的ID。