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