com.fasterxml.classmate.util.ClassKey Maven / Gradle / Ivy
package com.fasterxml.classmate.util;
import java.io.Serializable;
/**
* Helper class used as key when we need efficient Class-to-value lookups.
*/
@SuppressWarnings("serial")
public class ClassKey
implements Comparable, Serializable
{
private final String _className;
private final Class> _class;
/**
* Let's cache hash code straight away, since we are almost certain to need it.
*/
private final int _hashCode;
public ClassKey(Class> clz)
{
_class = clz;
_className = clz.getName();
_hashCode = _className.hashCode();
}
/*
/**********************************************************************
/* Comparable
/**********************************************************************
*/
@Override
public int compareTo(ClassKey other)
{
// Just need to sort by name, ok to collide (unless used in TreeMap/Set!)
return _className.compareTo(other._className);
}
/*
/**********************************************************************
/* Standard methods
/**********************************************************************
*/
@Override
public boolean equals(Object o)
{
if (o == this) return true;
if (o == null) return false;
if (o.getClass() != getClass()) return false;
ClassKey other = (ClassKey) o;
/* Is it possible to have different Class object for same name + class loader combo?
* Let's assume answer is no: if this is wrong, will need to uncomment following functionality
*/
/*
return (other._className.equals(_className))
&& (other._class.getClassLoader() == _class.getClassLoader());
*/
return other._class == _class;
}
@Override public int hashCode() { return _hashCode; }
@Override public String toString() { return _className; }
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy