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>
{
@SuppressWarnings("unchecked")
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();
}
@SuppressWarnings("unchecked")
@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);
}
}