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);
}
}