package javax.annotation; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import javax.annotation.meta.TypeQualifier; import javax.annotation.meta.When; /** * This annotation a value that is of a particular syntax, such as Java syntax * or regular expression syntax. This can be used to provide syntax checking of * constant values at compile time, run time checking at runtime, and can assist * IDEs in deciding how to interpret String constants (e.g., should a * refactoring that renames method {@code x()} to {@code y()} update the String * constant {@code "x()"}). */ @Documented @TypeQualifier(applicableTo = CharSequence.class) @Retention(RetentionPolicy.RUNTIME) public @interface Syntax { /** * Value indicating the particular syntax denoted by this annotation. Different * tools will recognize different syntaxes, but some proposed canonical values * are: * *

* Syntax names can be followed by a colon and a list of key value pairs, * separated by commas. For example, "SQL:dialect=Oracle,version=2.3". Tools * should ignore any keys they don't recognize. * * @return a name indicating the particular syntax. */ String value(); When when() default When.ALWAYS; }