方法重复输出
对吊索和Java很新,所以我提前道歉。 但有没有人知道为什么当我在根部它输出我的路径两次? 奇怪的是它只发生在绝对根。
public static String generateTest(Page page, Page rootPage, String bc) { Page parent = page.getParent(); String bread = ""; bread += (parent != null) ? "" + parent.getTitle() + "" : ""; bread += " " + "" + page.getTitle() + " " + bc; return (ifAtRoot(parent , rootPage)) ? breadcrumb : generateTest(parent, rootPage, bread); } public static boolean ifAtRoot(Page page, Page root) { return (page == null || root.getPath() == page.getPath()); }
任何帮助是极大的赞赏!
首先, ifAtRoot()
仅在page
为null
时才返回true,因为您无法使用==
比较对象(包括字符串)。 您应该使用.equals()
代替:
public static boolean ifAtRoot(Page page, Page root) { return (page == null || root.getPath().equals(page.getPath())); }
在你的情况下, ifAtRoot()
第一次调用返回false
,所以你第二次调用它来递归传递刚刚创建的brend
。 第二个调用再次创建brend
并将bc
(包含先前创建的brend)附加到它。 ifAtRoot()
的第二次调用将返回true。 否则,您将进入无限递归并使用StackOverflowError
完成。
- 不可变对象和不可修改的集合
- Java – 搜索目录中的文件
- java.lang.NoSuchMethodError:com.google.common.base.Preconditions.checkState(ZLjava / lang / String;),包含Selenium,gradle和ChromeDriver
- JAXB – 解组多态对象
- 如何在Java的CardLayout中获得顶级卡片
- 可能的根本原因包括-Xss的设置太低以及非法循环inheritance依赖性
- Spring Social Facebook:“OAuth2’状态’参数不匹配”
- 将按键发送到JTextField
- 如何在Spring Security中使用自定义角色/权限?