我找到了这段代码:
public CMNavigation parsePath(List<String> segments) {
if (segments.isEmpty()) {
return null;
}
// resolve first URL segment to site root channel
Iterator<String> it = segments.iterator();
CMNavigation rootNavigation = lookupRootSegment(it.next());
if (rootNavigation == null) {
return null;
}
Content content = rootNavigation.getContent();
// iterate over next segments and find the respective navigation child
while (it.hasNext()) {
String segment = it.next();
List<Content> candidates = content.getLinksFulfilling("children", "segment = ?0", segment);
if (candidates.isEmpty()) {
return null;
}
content = candidates.get(0);
}
return contentBeanFactory.createBeanFor(content, CMNavigation.class);
}
不要太关心背景。 我只想知道为什么&#34;段&#34;类型 SingletonImmutableList 的类型在这里通过while循环加上由&#34; segments&#34;给出的迭代器进行迭代。为什么作者不是在这里使用foreach? 我想更好地了解这种方式,并了解其中的好处。