com.google.web.bindery.autobean.shared

## Interface AutoBeanFactory

- All Known Subinterfaces:
    InProcessRequestFactory.Factory, MessageFactory

      public interface AutoBeanFactory

  A tag interface for the AutoBean generator. Instances of AutoBeans are created by declaring factory methods on a subtype of this interface.

  Simple interfaces, consisting of only getters and setters, can be constructed with a no-arg method. Non-simple interfaces must provide a delegate object to implement a non-simple interface or use a `AutoBeanFactory.Category`.

       interface MyFactory extends AutoBeanFactory {
         // A factory method for a simple bean
         AutoBean<BeanInterface> beanInterface();
         // A factory method for a wrapper bean
         AutoBean<ArbitraryInterface> wrapper(ArbitraryInterface delegate);
       }

  See Also:
    AutoBean wiki page

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Interface and Description
    --- | ---
    `static interface` | `AutoBeanFactory.Category` Allows non-property methods on simple bean implementations when applied.
    `static interface` | `AutoBeanFactory.NoWrap` The types specified by this annotation will not be wrapped by an AutoBean when returned from an AutoBean-controlled method.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `<T> AutoBean<T>` | `create(java.lang.Class<T> clazz)` Allows dynamic creation of AutoBean instances based on declared parameterizations.
    `<T,U extends T> AutoBean<T>` | `create(java.lang.Class<T> clazz, U delegate)` Allows dynamic creation of wrapped AutoBean instances based on declared parameterizations.

- - ### Method Detail

    - #### create

          <T> AutoBean<T> create(java.lang.Class<T> clazz)

      Allows dynamic creation of AutoBean instances based on declared parameterizations.
      Type Parameters:
        `T` - the parameterization of the created `AutoBean`
      Parameters:
        `clazz` - the Class of type T of the new instance
      Returns:
        an `AutoBean` of type T or `null` if the interface type is unknown to the factory

    - #### create

          <T,U extends T> AutoBean<T> create(java.lang.Class<T> clazz,
                                             U delegate)

      Allows dynamic creation of wrapped AutoBean instances based on declared parameterizations.
      Type Parameters:
        `T` - the parameterization of the created `AutoBean`
        `U` - the delegate's type, a subtype of T
      Parameters:
        `clazz` - the Class of type T of the new instance
        `delegate` - a delegate that extends type T
      Returns:
        an `AutoBean` of type T or `null` if the interface type is unknown to the factory