When creating Bindings, you can also choose not to specify the binding target. It is usually used for the Concrete classes or types that contain @ ImplementedBy and @ ProvidedBy (described later ). The purpose of Untargeted bindings is to notify Injector of a class type, so that Injector can prepare a dependency in advance. Untargetted Bindings does not include the to statement.
For example:
[Java] bind (MyConcreteClass. class );
Bind (AnotherConcreteClass. class). in (Singleton. class );
Bind (MyConcreteClass. class );
Bind (AnotherConcreteClass. class). in (Singleton. class );
However, if binding annotations needs to be used at the same time, you need to add a target for the binding, even if it is bound to the same real class, such:
[Java] bind (MyConcreteClass. class)
. AnnotatedWith (Names. named ("foo "))
. To (MyConcreteClass. class );
Bind (AnotherConcreteClass. class)
. AnnotatedWith (Names. named ("foo "))
. To (AnotherConcreteClass. class)
. In (Singleton. class );
Excerpted from the mobile app