@Documented @Retention(value=RUNTIME) @Target(value={TYPE_USE,TYPE_PARAMETER}) @SubtypeOf(value={ClassGetName.class,FqBinaryName.class}) @QualifierForLiterals(stringPatterns="^[A-Za-z_][A-Za-z_0-9]*(\\.[A-Za-z_][A-Za-z_0-9]*)*(\\$[A-Za-z_0-9]+)*$") public @interface BinaryName
For example, in
package org.checkerframework.checker.signature;
public class SignatureChecker {
private class Inner {}
}
the binary names for the two types are org.checkerframework.checker.signature.SignatureChecker
and org.checkerframework.checker.signature.SignatureChecker$Inner.
Binary names and internal form only differ by the use of '.' vs. '/' as package separator.
The binary name should not be confused with the internal form, which is a variant of the binary name that actually appears in the class file.