title: Guice injections on named string fields
body: <p>I have a class:</p>
  
  <pre><code>public class FizzBuzz {
      @Named("Red") private String redService;
  
      public static void main(String[] args) {
          GuiceTest testApp = new GuiceTest();
  
          testApp.run();
      }
  
      private void run() {
          Injector inj = Guice.createInjector(new MyModule());
  
          redService = (String)inj.getInstance(String.class);
  
          // Should print "red-service" but is instead an empty string!
          System.out.println("redService = " + redService);
      }
  
      // ... Rest of class omitted for brevity
  }
  
  public class MyModule extends AbstractModule {
      @Override
      protected void configure() {
          bind(String.class).annotatedWith(Names.named("Red")).toInstance("red-service");
      }
  }
  </code></pre>
  
  <p>In my module I instruct Guice to bind all <code>String.class</code> instances <code>@Named</code> "Red" to the string instance "red-service", however I'm not seeing that in the outputted print statement. How am I using Guice incorrectly?</p>