NoTypeImpl.java

package net.florianschoppmann.java.reflect;

import javax.annotation.Nullable;
import javax.lang.model.type.NoType;
import javax.lang.model.type.TypeKind;
import javax.lang.model.type.TypeVisitor;

final class NoTypeImpl extends AnnotatedConstructImpl implements ReflectionTypeMirror, NoType {
    static final NoTypeImpl VOID = new NoTypeImpl(TypeKind.VOID);
    static final NoTypeImpl NONE = new NoTypeImpl(TypeKind.NONE);

    private final TypeKind typeKind;

    NoTypeImpl(TypeKind typeKind) {
        this.typeKind = typeKind;
    }

    @Override
    public String toString() {
        return ReflectionTypes.getInstance().toString(this);
    }

    @Override
    public <R, P> R accept(TypeVisitor<R, P> visitor, @Nullable P parameter) {
        return visitor.visitNoType(this, parameter);
    }

    @Override
    public TypeKind getKind() {
        return typeKind;
    }
}