package annotations.field; /*>>> import org.checkerframework.checker.nullness.qual.*; */ /** * A {@link ClassTokenAFT} is the type of an annotation field that holds a * class token (something like <code>{@link String}.class</code>). * Even if the field type was originally some parameterization * <code>{@link Class}<...></code>, the annotation scene library * represents it as a plain {@link ClassTokenAFT}. Use the singleton * {@link #ctaft}. */ public final class ClassTokenAFT extends ScalarAFT { // On 2006.07.07 we decided against parameterizations because // class files that use annotations don't contain them. // The type arguments, if any, of the field type // Could be "" or "<HashMap>" (stupid) or "<? extends PrettyPrinter>", etc., // but not null. /* public final String parameterization; */ private ClassTokenAFT() {} /** * The singleton {@link ClassTokenAFT}. */ public static final ClassTokenAFT ctaft = new ClassTokenAFT(); // public ClassTokenAFT(/* String parameterization */) { // /* this.parameterization = parameterization; */ // } /** * {@inheritDoc} */ @Override public boolean isValidValue(Object o) { return o instanceof java.lang.Class; } /** * {@inheritDoc} */ @Override public String toString() { return "Class"/* + parameterization */; } /** * {@inheritDoc} */ @Override public String format(Object o) { return ((java.lang.Class<?>)o).getName() + ".class"; } @Override public <R, T> R accept(AFTVisitor<R, T> v, T arg) { return v.visitClassTokenAFT(this, arg); } }