title: How @Inject annotation would know which concrete class to instantiate under same interface?
body: <p>I am using Dagger2.0 in Android app.</p>
  
  <p>I am confused with <strong>@Inject</strong> annotation. I have two concrete class implementing the same interface. <strong>I am injecting one of the concrete class using @Inject annotation.</strong> Here, how @Inject annotation decides which concrete class to instantiate.</p>
  
  <p><strong>Example:</strong></p>
  
  <p>I have one interface.</p>
  
  <p><strong>Product.java</strong>     </p>
  
  <pre><code>public interface Product {}
  </code></pre>
  
  <p>There are total two concrete classes ProductOne and ProductTwo.</p>
  
  <p><strong>ProductOne.class</strong></p>
  
  <pre><code>public class ProductOne implements Product{
  
  @Inject
  public ProductOne() {}
  
  }
  </code></pre>
  
  <p>Packaging class is the client.</p>
  
  <p><strong>Packaging.java</strong> </p>
  
  <pre><code>public class Packaging{
  
  @Inject
  public Packaging(Product product){}
  
  }
  </code></pre>
  
  <p>Till this moment my package class uses instance of ProductOne class. </p>
  
  <p><strong>Confusion:</strong></p>
  
  <p>If I have one another concrete class ProductTwo with @Inject annotation.</p>
  
  <pre><code>public class ProductTwo implements Product {
  
  @Inject
  public ProductTwo() {}
  
  }
  </code></pre>
  
  <p><strong>Now in my Packaging class I want to use instance of ProductTwo class, So this @Inject annotation will work at this moment?</strong></p>