Могу ли я получить вершину вместо элемента из этого GraphTraversal?

Я использую Tinkerpop3 Gremlin в сравнении с эталонной реализацией TinkerGraph.

Я пытаюсь .next() и Vertex выйти из этого обхода:

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

К сожалению, я могу получить Element только от next(). Когда я назначаю вывод next() в Vertex, я получаю:

ошибка: несовместимые типы: элемент не может быть преобразован в вершину

Как я могу получить Vertex?

Я просмотрел документы и убедитесь, что V() возвращает GraphTraversal<Vertex,Vertex>. Шаги has() подписаны default <E2 extends Element> GraphTraversal<S,E2>, что, как я думал, сохранит GraphTraveral<Vertex, Vertex>, но next() дает только Element. Не уверенны что делать дальше.

Спасибо.


person Dmitry Minkovsky    schedule 14.01.2015    source источник


Ответы (1)


Ну, вы всегда можете сделать это:

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

и просто явно введите последний шаг.

person stephen mallette    schedule 15.01.2015
comment
Несмотря на то, что вышеизложенное работает, я не думал, что это необходимо делать - проверим это дальше. - person stephen mallette; 15.01.2015
comment
Стивен, спасибо, я нашел похожую версию, которая работает. Новичок в Java, что должно быть частью того, почему это меня так озадачило. Но все же я не понимаю, зачем компилятору понадобился этот дополнительный бит. Если вы разберете цепочку и назначите каждый шаг переменной, это будет Vertex полностью. Не знаю, почему компилятор вводит Element. - person Dmitry Minkovsky; 15.01.2015