У вас действительно нет большого выбора, кроме как проверить результат, чтобы увидеть его тип. Результаты Гремлин также не всегда однородны. Например, кто-то может отправить это:
g.V(1).outE().path().
unfold().
inject(1, [1L, "xyz", [x:"don't care that this traversal is crazy"]], Double.NaN)
Забудьте, что никто, вероятно, не сделает этого, и просто подумайте, что они могли. Вы получаете смесь вершин, ребер, списка с длинной двойной и встроенной картой. Вы не узнаете результат, пока не получите его, и даже тогда вам может потребоваться определить типы внутри коллекций контейнеров. Если у вас есть разные виды рендеринга в вашем интерфейсе для каждого типа, у вас нет выбора, кроме как делать рекурсивное определение типов. Вы, вероятно, также захотите какой-то рендеринг по умолчанию, который может обрабатывать вещи, которые вы не знаете, как рендерить.
Если вы отключите сериализацию Gryo (я предполагаю, что вы используете ее в качестве значения по умолчанию для client
) для GraphSON, вы получите более ограниченный набор типов, на который можно рассчитывать. Вы можете увидеть их в документации IO .