У меня есть граф, объявленный как
Graph<MyBase, DefaultEdge> myGraph = new DefaultGraph<MyBase, DefaultEdge>();
Я хочу иметь возможность сохранить граф и ребра и заменить типы базовых классов вершинами подтипами, что-то вроде
for (Mybase mybase : myGraph.vertexSet()) {
mybase = mySubType;
}
Но я не думаю, что это работает, тип вершин остается MyBase.Это то, что я могу достичь с помощью jGraph?Кажется, что следующее не работает
public static <Object, DefaultEdge> void replaceVertex(
Graph<MyBase, org.jgrapht.graph.DefaultEdge> graph, MyBase vertex,
MyBase replace) {
graph.addVertex(replace);
for (org.jgrapht.graph.DefaultEdge edge : graph.outgoingEdgesOf(vertex))
graph.addEdge(replace, graph.getEdgeTarget(edge), edge);
for (org.jgrapht.graph.DefaultEdge edge : graph.incomingEdgesOf(vertex))
graph.addEdge(graph.getEdgeSource(edge), replace, edge);
graph.removeVertex(vertex);
}
Когда replace
является типом базового класса, это прекрасно работает, когда replace
является подтипом, тогда вершина теряется.Как я могу сделать эту работу?