NameImpl.java

package net.florianschoppmann.java.reflect;

import javax.annotation.Nullable;
import javax.lang.model.element.Name;
import java.util.Objects;

final class NameImpl implements Name {
    private final String name;

    NameImpl(String name) {
        this.name = Objects.requireNonNull(name);
    }

    @Override
    public boolean equals(@Nullable Object otherObject) {
        if (this == otherObject) {
            return true;
        } else if (otherObject == null || getClass() != otherObject.getClass()) {
            return false;
        }

        return name.equals(((NameImpl) otherObject).name);
    }

    @Override
    public int hashCode() {
        return name.hashCode();
    }

    @Override
    public boolean contentEquals(CharSequence charSequence) {
        return name.contentEquals(charSequence);
    }

    @Override
    public int length() {
        return name.length();
    }

    @Override
    public char charAt(int index) {
        return name.charAt(index);
    }

    @Override
    public CharSequence subSequence(int start, int end) {
        return name.subSequence(start, end);
    }

    @Override
    public String toString() {
        return name;
    }
}