Linked binding helps to map a type to its implementation. Examples of linked bindings include an interface to its implementation class, and a superclass to a subclass.
Here, NotificationService is bound to the SMSService instance in the ApplicationModule class. This binding affirmation binds an interface to its implementation:
bind(NotificationService.class).to(SMSService.class);
When we call injector.getInstance(ApplicationModule.class), it will utilize SMSService. If binding to a distinctive implementation of NotificationService, as an EmailService is required, then we only need to essentially alter the binding:
bind(NotificationService.class).to(EmailService.class);
We can even define the link from a type to any of its ...