package annotations.field; /*>>> import org.checkerframework.checker.nullness.qual.*; */ /** * An {@link EnumAFT} is the type of an annotation field that can hold an * constant from a certain enumeration type. */ public final class EnumAFT extends ScalarAFT { /** * The name of the enumeration type whose constants the annotation field * can hold. */ public final String typeName; /** * Constructs an {@link EnumAFT} for an annotation field that can hold * constants of the enumeration type with the given name. */ public EnumAFT(String typeName) { this.typeName = typeName; } /** * {@inheritDoc} */ @Override public boolean isValidValue(Object o) { // return o instanceof Enum; return o instanceof String; } /** * {@inheritDoc} */ @Override public String toString() { return "enum " + typeName; } /** * {@inheritDoc} */ @Override public String format(Object o) { return typeName + "." + o.toString(); } @Override public <R, T> R accept(AFTVisitor<R, T> v, T arg) { return v.visitEnumAFT(this, arg); } }