Dagger 2 - two provides method that provide same interface : <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>
