请教一个流式操作的递归问题

请教一下大佬们,谷粒商城那个项目里,雷神第一个查询是查询三级子菜单,里面用的是流式操作,我的问题是,雷神当时查询子菜单使用了递归然后filter.过滤。但是想问一下,最后没有子菜单的时候,过滤以后的流应该是一个空的流对象啊,但应该不是null吧。那么会继续递归下去,他那个方法的停止递归条件在哪里呢?
img

  1. 包装类型和字符串建议使用equals比较是否相等,filter里面的id应该判断是否为空再使用equals比较。
  2. filter里面应该这样写: return StringUtil.isNotEmpty(categoryEntity.getParentCid()) && categoryEntity.getParentCid().equals(root.getCarId());
  3. 亦或者你的root本来是null