blob: c48bac84b562a652dffdfb1941b303c8a91adbff [file] [log] [blame]
package org.codehaus.jackson.map.jsontype;
/**
* Simple container class for types with optional logical name, used
* as external identifier
*
* @author tatu
* @since 1.5
*/
public final class NamedType
{
protected final Class<?> _class;
protected final int _hashCode;
protected String _name;
public NamedType(Class<?> c) { this(c, null); }
public NamedType(Class<?> c, String name)
{
_class = c;
_hashCode = c.getName().hashCode();
setName(name);
}
public Class<?> getType() { return _class; }
public String getName() { return _name; }
public void setName(String name) {
_name = (name == null || name.length() == 0) ? null : name;
}
public boolean hasName() { return _name != null; }
/**
* Equality is defined based on class only, not on name
*/
@Override
public boolean equals(Object o)
{
if (o == this) return true;
if (o == null) return false;
if (o.getClass() != getClass()) return false;
return _class == ((NamedType) o)._class;
}
@Override
public int hashCode() { return _hashCode; }
@Override
public String toString() {
return "[NamedType, class "+_class.getName()+", name: "+(_name == null ? "null" :("'"+_name+"'"))+"]";
}
}