受保护的?JGraphT DefaultEdge类上的getSource和getTarget方法

Jos*_*ina 15 jgrapht

这些方法getSource()getTarget()DefaultEdgeorg.jgrapht.graph.DefaultEdge保护.

我应该如何访问每个边缘的源和目标顶点返回由edgeSet()org.jgrapht.graph.SimpleGraph

下面的代码显示了正在发生的事情.

import java.util.Set;

import org.jgrapht.UndirectedGraph;
import org.jgrapht.graph.DefaultEdge;
import org.jgrapht.graph.SimpleGraph;

public class TestEdges
{
    public static void main(String [] args)
    {
        UndirectedGraph<String, DefaultEdge> g =
            new SimpleGraph<String, DefaultEdge>(DefaultEdge.class);

        String A = "A";
        String B = "B";
        String C = "C";

        // add the vertices
        g.addVertex(A);
        g.addVertex(B);
        g.addVertex(C);

        g.addEdge(A, B);
        g.addEdge(B, C);
        g.addEdge(A, C);

        Set<DefaultEdge> edges = g.edgeSet();

        for(DefaultEdge edge : edges) {
            String v1   = edge.getSource(); // Error getSource() is protected method
            String v2   = edge.getTarget(); // Error getTarget() is protected method
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Jos*_*ina 25

"正确的"的方法来访问边缘源和目标,根据JGraphT邮件列表是使用的方法getEdgeSource(E)getEdgeTarget(E)从所述接口Interface Graph<V,E>org.jgrapht

然后修改代码

for(DefaultEdge edge : edges) {
   String v1   = g.getEdgeSource(edge);
   String v2   = g.getEdgeTarget(edge);
}
Run Code Online (Sandbox Code Playgroud)