How do different retention policies affect my annotations?

  • RetentionPolicy.SOURCE: Discard during
    the compile. These annotations don’t
    make any sense after the compile has
    completed, so they aren’t written to
    the bytecode.
    Example: @Override, @SuppressWarnings

  • RetentionPolicy.CLASS: Discard during
    class load. Useful when doing
    bytecode-level post-processing.
    Somewhat surprisingly, this is the
    default.

  • RetentionPolicy.RUNTIME: Do not
    discard. The annotation should be
    available for reflection at runtime.
    Example: @Deprecated

Source:
The old URL is dead now
hunter_meta and replaced with hunter-meta-2-098036. In case even this goes down, I am uploading the image of the page.

Image (Right Click and Select ‘Open Image in New Tab/Window’)
Screenshot of Oracle website

Leave a Comment