Extending SimpleWeightedGraph - JgraphT

469 views Asked by At

I wanted to know about the right way to extend the SimpleWeightedGraph from JgraphT library so that I could use a simplified alias and also include additional functionalities as required.

Instead of creating a new graph each time using

SimpleWeightedGraph<Node, DefaultWeightedEdge> graph 
= new SimpleWeightedGraph<Node, DefaultWeightedEdge>(DefaultWeightedEdge.class);

I created a class

public class CustomGraph extends SimpleWeightedGraph<Node, DefaultWeightedEdge>{    

    public CustomGraph(){
        super(DefaultWeightedEdge.class);
    }
    /*Additional custom methods*/
}

So that I can instantiate using

CustomGraph graph = new CustomGraph();

But this doesn't seem to create the object. Am i missing any other constructor for this?

1

There are 1 answers

0
Steve On BEST ANSWER

Ok I figured it out. Here is the class with the edgefactory constructors that had to be included.

public class CustomGraph extends SimpleWeightedGraph<Node, DefaultWeightedEdge>{

    /**
     * Creates a new simple weighted graph with the specified edge factory.
     *
     * @param ef the edge factory of the new graph.
     */
    public CustomGraph(EdgeFactory<Node, DefaultWeightedEdge> ef)
    {
        super(ef);
    }

    /**
     * Creates a new simple weighted graph.
     *
     * @param edgeClass class on which to base factory for edges
     */
    public CustomGraph(Class<? extends DefaultWeightedEdge> edgeClass)
    {
        this(new ClassBasedEdgeFactory<Node, DefaultWeightedEdge>(edgeClass));
    }

}