Overview | Package | Class | Deprecated | Index | Help
| Groovy Documentation
| FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | METHOD | DETAIL: FIELD | METHOD

## org.gradle.api
[Java] Interface ExtensiblePolymorphicDomainObjectContainer

    org.gradle.api.NamedDomainObjectSet
      org.gradle.api.PolymorphicDomainObjectContainer
          org.gradle.api.ExtensiblePolymorphicDomainObjectContainer
              java.lang.Iterable
                  org.gradle.api.NamedDomainObjectCollection
                      org.gradle.api.DomainObjectCollection
                          org.gradle.util.Configurable
                              java.util.Collection
                                  org.gradle.api.NamedDomainObjectContainer

All Superinterfaces:
  NamedDomainObjectSet, PolymorphicDomainObjectContainer, Iterable, NamedDomainObjectCollection, DomainObjectCollection, Configurable, Collection, NamedDomainObjectContainer

    @Incubating
    public interface ExtensiblePolymorphicDomainObjectContainer
    extends PolymorphicDomainObjectContainer

A PolymorphicDomainObjectContainer that can be extended at runtime to create elements of new types.

Parameters:
  `` - the (base) container element type

Method Summary
`void` | `registerBinding(Class type, Class implementationType)` Registers a binding from the specified "public" domain object type to the specified implementation type.
`void` | `registerFactory(Class type, NamedDomainObjectFactory factory)` Registers a factory for creating elements of the specified type.
`void` | `registerFactory(Class type, Closure factory)` Registers a factory for creating elements of the specified type.

Methods inherited from interface PolymorphicDomainObjectContainer
create, create

Methods inherited from interface NamedDomainObjectContainer
configure, create, create, create, maybeCreate

Methods inherited from interface NamedDomainObjectSet
findAll, matching, matching, withType

Method Detail

### registerBinding

    public void registerBinding(Class type, Class implementationType)

  Registers a binding from the specified "public" domain object type to the specified implementation type. Whenever the container is asked to create an element with the binding's public type, it will instantiate the binding's implementation type. If the implementation type has a constructor annotated with javax.inject.Inject, its arguments will be injected.

  In general, registering a binding is preferable over implementing and registering a factory.

  Parameters:
    `type` - a public domain object type
    `implementationType` - the corresponding implementation type
    `` - a public domain object type

### registerFactory

    public void registerFactory(Class type, NamedDomainObjectFactory factory)

  Registers a factory for creating elements of the specified type. Typically, the specified type is an interface type.
  throws:
    IllegalArgumentException if the specified type is not a subtype of the container element type
  Parameters:
    `type` - the type of objects created by the factory
    `factory` - the factory to register
    `` - the type of objects created by the factory

### registerFactory

    public void registerFactory(Class type, Closure factory)

  Registers a factory for creating elements of the specified type. Typically, the specified type is an interface type.
  throws:
    IllegalArgumentException if the specified type is not a subtype of the container element type
  Parameters:
    `type` - the type of objects created by the factory
    `factory` - the factory to register
    `` - the type of objects created by the factory

Gradle API 1.10