groovy.transform

## Annotation Type ExternalizeMethods

-     @Documented
       @Retention(value=RUNTIME)
       @Target(value=TYPE)
      public @interface ExternalizeMethods

  Class annotation used to assist in the creation of `Externalizable` classes. The `@ExternalizeMethods` annotation instructs the compiler to execute an AST transformation which adds `writeExternal()` and `readExternal()` methods to a class and adds `Externalizable` to the interfaces which the class implements. The `writeExternal()` method writes each property (and optionally field) of the class while the `readExternal()` method will read each one back in the same order. Properties or fields marked as `transient` are ignored. This annotation is typically used in conjunction with the `@ExternalizeMethods` annotation but most usually not directly but rather via `@AutoExternalizable` which is a shortcut for both annotations.

  Example usage:

       import groovy.transform.*
        @ExternalizeMethods
       class Person {
         String first, last
         List favItems
         Date since
       }

  Which will create a class of the following form:

       class Person implements Externalizable {
         ...
         public void writeExternal(ObjectOutput out) throws IOException {
           out.writeObject(first)
           out.writeObject(last)
           out.writeObject(favItems)
           out.writeObject(since)
         }

         public void readExternal(ObjectInput oin) {
           first = (String) oin.readObject()
           last = (String) oin.readObject()
           favItems = (List) oin.readObject()
           since = (Date) oin.readObject()
         }
         ...
       }

  Since:
    1.8.0
  Author:
    Paul King

- - ### Optional Element Summary

    Optional Elements
    Modifier and Type | Optional Element and Description
    --- | ---
    `java.lang.String[]` | `excludes` Comma separated list of property names to exclude from externalizing.
    `boolean` | `includeFields` Include fields as well as properties when externalizing.

- - ### Element Detail

    - #### excludes

          public abstract java.lang.String[] excludes

      Comma separated list of property names to exclude from externalizing. For convenience, a String with comma separated names can be used in addition to an array (using Groovy's literal list notation) of String values.
      Default:
        {}

  - - #### includeFields

          public abstract boolean includeFields

      Include fields as well as properties when externalizing.
      Default:
        false