我有一个方法:
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/