Package dagger
Annotation Type Component.Factory
-
@Retention(RUNTIME) @Target(TYPE) @Documented public static @interface Component.FactoryA factory for a component.A factory is a type with a single method that returns a new component instance each time it is called. The parameters of that method allow the caller to provide the modules, dependencies and bound instances required by the component.
Components may have a single nested
static abstract classorinterfaceannotated with@Component.Factory. If they do, then Dagger will generate a factory class that will implement that type. Note that a component with a@Component.Factorymay not also have a@Component.Builder.Factory types must follow some rules:
- There must be exactly one abstract method, which must return the component type or one of its supertypes.
- The method must have a parameter for each component dependency.
- The method must have a parameter for each non-
abstractmodule that has non-staticbinding methods, unless Dagger can instantiate that module with a visible no-argument constructor. - The method may have parameters for modules that Dagger can instantiate or does not need to instantiate.
- The method may have parameters annotated with
@BindsInstance. These parameters bind the instance passed for that parameter within the component. See@BindsInstancefor more information. - There may be non-
abstractmethods, but they are ignored as far as validation and factory generation are concerned.
Componentwith aFactory:@Component(modules = {BackendModule.class, FrontendModule.class}) interface MyComponent { MyWidget myWidget(); @Component.Factory interface Factory { MyComponent newMyComponent( BackendModule bm, FrontendModule fm, @BindsInstance Foo foo); } }For a root component, if a
@Component.Factoryis defined, the generated component type will have astaticmethod namedfactory()that returns an instance of that factory.- Since:
- 2.22