package edu.uci.ics.jung.graph.util; /** * A class that is used to link together a graph element and a specific graph. * Provides appropriate implementations of <code>hashCode</code> and * <code>equals</code>. */ public class Context<G, E> { private static Context instance = new Context(); /** * The graph element which defines this context. */ public G graph; /** * The edge element which defines this context. */ public E element; /** * Returns an instance of this type for the specified graph and element. * * @param <G> * the graph type * @param <E> * the element type */ @SuppressWarnings("unchecked") public static <G, E> Context<G, E> getInstance(G graph, E element) { instance.graph = graph; instance.element = element; return instance; } @Override public int hashCode() { return graph.hashCode() ^ element.hashCode(); } @Override public boolean equals(Object o) { if (!(o instanceof Context)) { return false; } Context context = (Context) o; return context.graph.equals(graph) && context.element.equals(element); } }