gpt4 book ai didi

java - 对象内存树的树查询语言?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:25:54 25 4
gpt4 key购买 nike

有哪些选项,最好使用 Java?

我看过JXPath将 XPath 扩展到对象。还有什么吗?

编辑:我所说的树查询语言是指一种语言,它可以创建与组织成树的对象(通过任何属性)匹配的表达式。

编辑 2:示例:

假设我有一棵包含这些对象的树:

public interface Node {
String getName();
int getValue();
String getSomeOtherAttribute();
List<Node> getChildren();
Node getParent();
}

现在想象一下这些的层次结构。我正在寻找的是可以查询这棵树中的实例的东西。例如“给我所有名称为“bar”、值小于 100 且父级为“foo”且父级的父级为“joe”的 Node 实例。所有这些都用简洁的语言表达。

正如我所说,JXPath是一种选择。寻找其他人。我还没有找到。

顺便说一句,我认为 JXPath 查询看起来像“//joe/foo/bar[@value < 100]”(或类似的东西)

someroot
|
joe
/ | \
c d foo
/ \
f bar,99

最佳答案

对于您自己创建的树结构,您可以应用 Visitor Pattern .让您的节点接受访问者并编写各种访问者来检查条件并收集您的对象。

使用 Visitor 还意味着您的代码将类型安全,而不是字符串内的查询。如果您重命名您的 getter 方法,IDE 将在所有 Visitors 中重命名它们,并且您的代码仍然有效。如果您的查询在字符串中,它可能会中断。

除了 JXPath,还有 JoQL它使用类似 SQL 的语言来查询对象,但它并不是真正为树型结构而设计的。

关于java - 对象内存树的树查询语言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10015751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com