title: Dagger 2 - two provides method that provide same interface
body: <p>lets say I have:</p>
  
  <pre><code>public interface Shape  {}
  
  
  public class Rectangle implements Shape {
  
  }
  
  public class Circle implements Shape {
  
  }
  </code></pre>
  
  <p>and I have a <strong>ApplicationModule</strong> which needs to provides instances for both <strong>Rec</strong> and <strong>Circle</strong>:</p>
  
  <pre><code>@Module
  public class ApplicationModule {
      private Shape rec;
      private Shape circle;
  
      public ApplicationModule() {
          rec = new Rectangle();
          circle= new Circle ();
      }
  
      @Provides
      public Shape provideRectangle() {
          return rec ;
      }
  
      @Provides
      public Shape provideCircle() {
          return circle;
      }
  }
  </code></pre>
  
  <p>and <strong>ApplicationComponent</strong>:</p>
  
  <pre><code>@Component(modules = ApplicationModule.class)
  public interface ApplicationComponent {
      Shape provideRectangle();
  }
  </code></pre>
  
  <p>with the code the way it is - it won't compile. 
  error saying </p>
  
  <blockquote>
    <p>Error:(33, 20) error: Shape is bound multiple times.</p>
  </blockquote>
  
  <p>It makes sense to me that this can't be done, because the component is trying to find a <code>Shape</code> instance, and it finds two of them, so it doesn't know which one to return.</p>
  
  <p>My question is - how can I handle this issue?</p>