【问题标题】:Can I get a Vertex instead of an Element out of this GraphTraversal?我可以从这个 GraphTraversal 中得到一个顶点而不是一个元素吗?
【发布时间】:2015-01-14 22:40:40
【问题描述】:

我正在使用 Tinkerpop3 Gremlin 来对抗参考 TinkerGraph 实现。

我正在尝试 .next()Vertex 退出此遍历:

graph.V().has(T.label, "link").has("url", url).next();

不幸的是,我只能从next() 获得Element。当我将next() 的输出分配给Vertex 时,我得到:

错误:不兼容的类型:元素无法转换为顶点

如何获得Vertex

我查看了the docs,发现V() 返回GraphTraversal<Vertex,Vertex>has() 步骤签名为default <E2 extends Element> GraphTraversal<S,E2>,我认为这会保留GraphTraveral<Vertex, Vertex>,但next() 只产生Element。不知道下一步该做什么。

谢谢。

【问题讨论】:

    标签: java tinkerpop tinkerpop3


    【解决方案1】:

    嗯 - 你总是可以这样做:

    Vertex v = g.V().has(T.label, "link").<Vertex>has("name", url).next();
    

    并简单地明确输入最后一步。

    【讨论】:

    • 尽管上述方法有效,但我认为没有必要这样做 - 将进一步检查。
    • 斯蒂芬,谢谢,我找到了一个类似的版本。 Java 新手,这一定是这让我如此难过的部分原因。但是,我仍然不明白为什么编译器需要那个额外的位。如果您拆开链条并将每个步骤分配给一个变量,那么它一直是Vertex。不知道为什么编译器会引入Element
    猜你喜欢
    • 2015-09-05
    • 2016-07-19
    • 2017-10-06
    • 2023-03-15
    • 2019-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多