0

我是 Java 新手,正在使用 jGraphT 创建 SimpleDirectedWeightedGraph。在创建边缘并将其添加到图表后尝试在边缘上设置权重时出现此错误:

Exception in thread "main" java.lang.ClassCastException: ObservationsDAG$ObservationsDAGEdge cannot be cast to org.jgrapht.graph.DefaultWeightedEdge
at org.jgrapht.graph.AbstractBaseGraph.setEdgeWeight(Unknown Source)

我假设我需要在这里的 ObservationsDAGEdge 类中做一些事情,但是通过查看 JGraphT 文档,我对那是什么感到困惑。我的边缘类是否需要权重实例变量,我是否需要提供 getEdgeWeight() 和 setEdgeWeight()?

4

1 回答 1

0

所以,我想通了。我首先尝试扩展 DefaultDirectedEdge,但随后 getEdgeTarget() 停止工作 - 可能是因为我需要实现开始/结束顶点。

阅读代码后,我尝试继承 SimpleDirectedWeightedGraph 并覆盖 setEdgeWeight 和 getEdgeWeight 并给我的边缘类一个权重实例变量。

这终于按预期工作了。

于 2011-09-25T06:36:54.817 回答