Annotation Type AutoValue.CopyAnnotations

Enclosing class:
AutoValue

@Retention(CLASS) @Target({TYPE,METHOD}) public static @interface AutoValue.CopyAnnotations
Specifies that AutoValue should copy any annotations from the annotated element to the generated class. This annotation supports classes and methods.

The following annotations are excluded:

  1. AutoValue and its nested annotations;
  2. any annotation appearing in the exclude() field;
  3. any class annotation which is itself annotated with the Inherited meta-annotation.

For historical reasons, annotations are always copied from an @AutoValue property method to its implementation, unless @CopyAnnotations is present and explicitly excludes that annotation. But annotations are not copied from the @AutoValue class itself to its implementation unless @CopyAnnotations is present.

When the type of an @AutoValue property method has annotations, those are part of the type, so they are always copied to the implementation of the method. @CopyAnnotations has no effect here. For example, suppose @Confidential is a TYPE_USE annotation:


   @AutoValue
   abstract class Person {
     static Person create(@Confidential String name, int id) {
       return new AutoValue_Person(name, id);
     }

     abstract @Confidential String name();
     abstract int id();
   }
Then the implementation of the name() method will also have return type @Confidential String.
  • Optional Element Summary

    Optional Elements
    Modifier and Type
    Optional Element
    Description
    Class<? extends Annotation>[]
     
  • Element Details