@Retention(value=SOURCE)
@Target(value={FIELD,PARAMETER,LOCAL_VARIABLE,ANNOTATION_TYPE,METHOD})
public @interface MagicConstant
This annotation intended to help IDEA to detect and auto-complete int and String constants used as an enumeration.
For example, in the Label.Label(String, int)
constructor the alignment parameter can be one of the following
int constants: Label.LEFT
, Label.CENTER
or Label.RIGHT
So, if @MagicConstant annotation applied to this constructor, IDEA will check the constructor usages for the allowed values.
E.g.
new Label("text", 0); // 0 is not allowed
new Label("text", Label.LEFT); // OK
@MagicConstant can be applied to:
@MagicConstant(intValues = {TOP, CENTER, BOTTOM})
int textPosition;
IDEA will check expressions assigned to the variable for allowed values:
textPosition = 0; // not allowed
textPosition = TOP; // OK
@MagicConstant(flagsFromClass = java.lang.reflect.Modifier.class)
public native int getModifiers();
IDEA will analyse getModifiers() method calls and check if its return value is used with allowed values:
if (aClass.getModifiers() == 3) // not allowed
if (aClass.getModifiers() == Modifier.PUBLIC) // OK
@MagicConstant(flags = {Font.PLAIN, Font.BOLD, Font.ITALIC})
@interface FontStyle {}
IDEA will check constructs annotated with @FontStyle for allowed values:Modifier and Type | Optional Element and Description |
---|---|
long[] |
flags |
java.lang.Class |
flagsFromClass |
long[] |
intValues |
java.lang.String[] |
stringValues |
java.lang.Class |
valuesFromClass |
public abstract long[] intValues
public abstract java.lang.String[] stringValues
public abstract long[] flags
public abstract java.lang.Class valuesFromClass
public abstract java.lang.Class flagsFromClass