Skip to content

mtumilowicz/java-annotations-retention-policy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status

java-annotations-retention-policy

preview

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

project description

We will provide examples with tests for each row of the table above.

  1. SourcePolicy
    • java code
      @SuppressWarnings("unchecked")
      class SourcePolicy {
      }
      
    • compiled code
      class SourcePolicy {
          SourcePolicy() {
          }
      }
      
    • tests
      assertThat(SourcePolicy.class.getAnnotations(), arrayWithSize(0));
      
  2. ClassPolicy
    • java code
      class ClassPolicy {
          @NonNull
          String nonNullField;
      }
      
    • compiled code
      class ClassPolicy {
          @NonNull
          String nonNullField;
      
          ClassPolicy() {
          }
      }
      
    • tests
      assertThat(ClassPolicy.class.getAnnotations(), arrayWithSize(0));
      
  3. 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());
      

About

RetentionPolicy description.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages