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