2017-02-04 5 views
7

私はGuice Moduleを提供しています。List<String>には@Providesのノンフィクションの方法が使用されています。Kotlin&Guiceで一般的なインスタンスを提供

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> 

、これはthis questionと同じのようですが、私はどこ@JvmSuppressWildcards注釈を追加するには考えています。 getStrings()メソッドに追加すると、getInstance()コールのobjectに追加されるように、何も変更されません。私はGuiceに私が欲しいものをするようにするにはどうしますか?

答えて

7

試行錯誤の多くの後、私は、このソリューションに到着しました:

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

それは私が注釈が実際に有効であることを考えているだろうが、突然テストは緑だった最後の場所です。

+0

同じように非常に驚いているのは、アノテーションが属する場所です –

関連する問題