我有一个方法:

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;
    }


我已经在调试器中观察到该方法可以正常工作,直到遇到其他情况。这样做时,将在调试器面板中分配传递给该方法的kmlFolder的ID。但是,当我进入突出显示return id语句的位置时,应用程序转到行getAppropriatePMStyleId(office, folderForStyle);并抛出空指针。该方法仅在应用程序中的某个地方被调用,因此我不认为它是从外部再次调用的。这里有我不了解的Java行为吗?

最佳答案

if块中,您进行递归调用,但是对返回的内容不做任何事情。您最终是return id;,但是id被初始化为null

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

id = getAppropriatePMStyleId(office, folderForStyle);


因此return id;返回正确的ID。

关于java - 方法返回后的if语句中的java调用命令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21098401/

10-12 14:25