Enum Constant | Description | Example |
---|---|---|
SOURCE | discarded by the compiler | @Override, @SuppressWarnings |
CLASS | recorded in the .class file but discarded at run time. | lombok @NonNull |
RUNTIME | recorded in the .class file and available at run time (by reflection). | @Deprecated, @Target, @FunctionalInterface |
We will provide examples with tests for each row of the table above.
SourcePolicy
- java code
@SuppressWarnings("unchecked") class SourcePolicy { }
- compiled code
class SourcePolicy { SourcePolicy() { } }
- tests
assertThat(SourcePolicy.class.getAnnotations(), arrayWithSize(0));
- java code
ClassPolicy
- java code
class ClassPolicy { @NonNull String nonNullField; }
- compiled code
class ClassPolicy { @NonNull String nonNullField; ClassPolicy() { } }
- tests
assertThat(ClassPolicy.class.getAnnotations(), arrayWithSize(0));
- java code
RuntimePolicy
- java code
@Deprecated class RuntimePolicy { }
- compiled code
@Deprecated class RuntimePolicy { RuntimePolicy() { } }
- tests
assertThat(RuntimePolicy.class.getAnnotations(), arrayWithSize(1)); assertEquals(Deprecated.class, RuntimePolicy.class.getAnnotations()[0].annotationType());
- java code