1import java.lang.annotation.Documented; 2import java.lang.annotation.Retention; 3import java.lang.annotation.RetentionPolicy; 4 5import javax.annotation.meta.TypeQualifier; 6import javax.annotation.meta.TypeQualifierValidator; 7import javax.annotation.meta.When; 8 9@Documented 10@TypeQualifier(applicableTo=String.class) 11@Retention(RetentionPolicy.RUNTIME) 12public @interface FixedLengthString { 13 int value(); 14 15 class Checker implements TypeQualifierValidator<FixedLengthString> { 16 17 public When forConstantValue(FixedLengthString annotation, Object v) { 18 if (!(v instanceof String)) 19 return When.NEVER; 20 String s = (String) v; 21 if (s.length() == annotation.value()) 22 return When.ALWAYS; 23 return When.NEVER; 24 } 25 } 26}