java - 方法重复输出

标签 java performance sling

对 sling 和 Java 相当陌生,所以我提前道歉。但是有人知道为什么当我在根目录时它会输出 我的路两次?奇怪的是它只发生在绝对根处。

public static String generateTest(Page page, Page rootPage, String bc) {

    Page parent = page.getParent();

    String bread = ""; 
    bread += (parent != null) ? "<li><a href=" + parent.getPath() + ">" + parent.getTitle() + "</a>" : "";
    bread += "<li>" + "<a href=" + page.getPath() + ">" + page.getTitle() + "</a></li>" + 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());
}

非常感谢任何帮助!

最佳答案

首先,仅当 pagenullifAtRoot() 才会返回 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 - 方法重复输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15911869/

相关文章:

java - 比较两个不同格式的日期对象

java - 为什么 static final 在每次迭代中都比 new 慢

java - Sling 资源与节点

java - 如何提供对 DAM 内容的受限访问?

java - 套接字读取缓冲区无响应

java - 使用字符串引用原始文件夹中的文件

java - 列出从 src 文件夹开始的文件

python - 两个解决方案之间的运行时差异大 : Project Euler #14

php - 如何获取类别的所有子级并将它们显示为 mySql 中的树?

aem - SlingAuthenticationHandler 如何与 CRXLogin 模块对话