Java — несовместимые типы: объект не может быть преобразован в переменную типа (стеки в DFS)

Я пытаюсь реализовать поиск в глубину для графиков с использованием стеков. Однако я продолжаю получать ошибки о переменной типа. Вот часть моего кода:

 public Result<T> depthFirstSearchFrom(String vertexId, Predicate< IVertex<T> > pred){
    Result<T> result = new Result<T>();
    IVertex<T> startVertex = getVertex(vertexId);

        Stack stack = new Stack();
        stack.add(startVertex);

        while (!stack.isEmpty()){
            IVertex<T> current = stack.pop();               

                    boolean visited = visitedVertices.contains(tgtVertex);

                    tgtVertex.getLabel().setParentVertex(current);

                    if (!visited){
                        stack.add(tgtVertex);
                    }
        }

        if (stack.isEmpty()){
            result.setVisitedVertices(visitedVertices);
            result.setPathCost(Float.POSITIVE_INFINITY);
        }
    }
    return result;
 }

Ошибка возникает в строках:

ошибка: несовместимые типы: объект не может быть преобразован в IVertex, где T — переменная типа

   IVertex<T> current = stack.pop();

а также

ошибка: непроверенный вызов add(E) как члена необработанного типа Vector, где E — переменная типа.

   stack.add(tgtVertex);

person assassinweed2    schedule 19.03.2017    source источник
comment
Во-первых, вы используете необработанный тип Stack — я бы не советовал вам этого делать. Затем вы используете tgtVertex и не показали нам его объявление. Покажите минимально воспроизводимый пример.   -  person Jon Skeet    schedule 19.03.2017


Ответы (1)


Просто объявите переменную стека того же типа, что и startVertex.

Stack<IVertex<T>> stack = new Stack<>();
person Community    schedule 19.03.2017