[英]Is it possible to use inheritance with JGraph
我有一个图表声明为
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
是子类型时,则顶点丢失。 我怎样才能做到这一点?
Graph<Number,DefaultEdge> g = new DefaultGraph<>(DefaultEdge.class);
Double mydouble=new Double(5.0);
Integer myInteger=new Integer(4);
g.add(myDouble);
g.add(myInteger);
这很好用:这里,顶点类型是Integer和Double的超类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.