java.lang.Object
xyz.cofe.coll.im.HTree
Обход и обновление гетерогенных деревьев (record)
Работает со следующими вложенными структурами:
- record
- ImList
- Optional
Системное свойство: HTree.visitorCacheEnabled, по умолчанию false - указывает,
кешировать или нет информацию о методах визитера
В общем случае выглядит так
HTree.visit(root, new Object() {
// обновление конкретного типа узла
NodeB node(NodeB n) {
return new NodeB(n.a + n.a);
}
// обновление обобщенного типа узла
Node node2(Node n) {
if (n instanceof NodeC nc && nc.b==4) {
return new NodeC(44, nc.c);
}
return n;
}
// вход в узел
void enter(ImList<Nest.PathNode> path) {
System.out.println("enter " + ">>> ".repeat(path.size()) + path.head().get());
}
// выход из узла
void show(ImList<Nest.PathNode> path) {
System.out.println("exit " + ">>> ".repeat(path.size()) + path.head().get());
}
})
-
Constructor Summary
Constructors -
Method Summary
-
Constructor Details
-
HTree
public HTree()
-
-
Method Details
-
visit
Обход дерева и обновление узлов- Type Parameters:
A- тип дерева- Parameters:
root- корень дереваvisitor- объект для посещения и обновления узловNodeVisitor- Returns:
- обновленное или старое дерево
-