方法返回后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
。我看不出为什么它需要是对象,这只是在每次递归中导致了一系列的装箱和拆箱。