在Kotlin&Guice中提供一个通用实例

我有一个Guice Module提供一个List<String>使用@Provides方法。

 class TestModule() : Module { override fun configure(binder: Binder) {} @Provides fun getStrings(): List<String> = listOf("foo", "bar") } class Test { @Test fun `provider can not deliver`() { val injector = Guice.createInjector(TestModule()) injector.getInstance(object : Key<List<String>>() {}) } } 

但是,测试失败:

 1) No implementation for java.util.List<? extends java.lang.String> was bound. while locating java.util.List<? extends java.lang.String> 

现在,这似乎是这个问题相同,但我不知道在哪里添加@JvmSuppressWildcards注释; 将它添加到getStrings()方法不会改变任何东西,就像在getInstance()调用中将其添加到object 。 我如何让Guice做我想做的事?

经过大量的试验和错误,我到达了这个解决方案:

 @Test fun `provider can not deliver`() { val injector = Guice.createInjector(TestModule()) injector.getInstance(object : Key<List<@JvmSuppressWildcards String>>() {}) } 

这是最后一个地方,我认为这个注释实际上是有效的,但突然间,测试是绿色的。