如何从Guice的注入器中检索带注释的实例?

比方说,我有一个模块:

Module extends AbstractModule { @Override protected void configure() { bind(String.class). annotatedWith(Names.named("annotation")). toInstance("DELIRIOUS"); } } 

我想testing模块,并检查它是否注入了Names.named("annotation")注释的String字段中的正确值,而没有类和字段,但直接从注入器获取值:

 @Test public void test() { Injector injector = Guice.createInjector(new Module()); // THIS IS NOT GOING TO WORK! String delirious = injector.getInstance(String.class); assertThat(delirious, IsEqual.equalTo("DELIRIOUS"); } 
 injector.getInstance(Key.get(String.class, Names.named("annotation"))); 

我正在使用以下方法

 public <T> T getInstance(Class<T> type, Class<? extends Annotation> option) { final Key<T> key = Key.get(type, option); return injector.getInstance(key); } 

为了这。 一般来说,你仍然有创build注释实例的问题,但是在这里Names.named("annotation")起作用。