Annotation Type Multibinds


  • @Documented
    @Target(METHOD)
    @Retention(RUNTIME)
    public @interface Multibinds
    Annotates abstract module methods that declare multibindings.

    You can declare that a multibound set or map is bound by annotating an abstract module method that returns the set or map you want to declare with @Multibinds.

    You do not have to use @Multibinds for sets or maps that have at least one contribution, but you do have to declare them if they may be empty.

    
       @Module abstract class MyModule {
         @Multibinds abstract Set<Foo> aSet();
         @Multibinds abstract @MyQualifier Set<Foo> aQualifiedSet();
         @Multibinds abstract Map<String, Foo> aMap();
         @Multibinds abstract @MyQualifier Map<String, Foo> aQualifiedMap();
    
         @Provides
         static Object usesMultibindings(Set<Foo> set, @MyQualifier Map<String, Foo> map) {
           return …
         }
       }

    A given set or map multibinding can be declared any number of times without error. Dagger never implements or calls any @Multibinds methods.

    See Also:
    Multibindings