Annotation Type Copy


@Retention(RUNTIME) @Inherited @Target(METHOD) public @interface Copy
Allows copying values of meta-annotation properties into the properties of an annotation that composes it. For example, consider the @MyReplacement meta-annotation defined below as:


@Replace(expression = "`", replacement = "")
@Parsed
public @interface MyReplacement {

    @Copy(to = Parsed.class)
    String field() default "";

    @Copy(to = Parsed.class, property = "index")
    int myIndex() default -1;
}

Values set on attributes field or myIndex in @MyReplacement will be assigned to the attributes field and index of the @Parsed annotation. This allows you to apply the @MyReplacement annotation to any given field of your class while configuring the field name and index to be set for the @Parsed annotation. This eliminates the need for adding explicit, additional annotations and their specific property values to each and every field. The following class can now make use of the @MyReplacement annotation to apply the the annotations @Replace and @Parsed, configuring the properties of the "inherited" @Parsed:

public class MyBean {

    @MyReplacement
    public String id;

    @MyReplacementUpperCase(field = "client_name")
    public String name;

    @MyReplacementUpperCase(myIndex = 4)
    public String address;
}

  • Required Element Summary

    Required Elements
    Modifier and Type
    Required Element
    Description
    Target annotation class that is part of a meta-annotation.
  • Optional Element Summary

    Optional Elements
    Modifier and Type
    Optional Element
    Description
    Target property of the given annotation class that is part of a meta-annotation.
  • Element Details

    • to

      Class to
      Target annotation class that is part of a meta-annotation.
      Returns:
      the class whose properties will be set from a given attribute of a meta-annotation
    • property

      String property
      Target property of the given annotation class that is part of a meta-annotation.
      Returns:
      the name of the property in the given annotation class that should receive the value of the meta-annotation property.
      Default:
      ""