All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.fasterxml.jackson.databind.jsontype.NamedType Maven / Gradle / Ivy

Go to download

General data-binding functionality for Jackson: works on core streaming API

There is a newer version: 2.17.0
Show newest version
package com.fasterxml.jackson.databind.jsontype;

/**
 * Simple container class for types with optional logical name, used
 * as external identifier
 */
public final class NamedType implements java.io.Serializable
{
    private static final long serialVersionUID = 1L;

    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+"'"))+"]";
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy