2017-02-04 4 views
7

için genel bir örnek sağlama List<String>@Provides aracılığıyla eklenen bir yöntem kullanarak bir Module Guice var.Kotlin & Guice

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

Şimdi, bu this question aynı olacak gibi görünüyor ama nerede @JvmSuppressWildcards ek açıklama eklemek için hiçbir fikrim yok;:

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>>() {}) 
    } 
} 

testi, ancak, başarısız olur getStrings() yöntemine eklenmesi, numaralı çağrıya object eklemeye yaptığı gibi hiçbir şeyi değiştirmez. Ne istediğimi yapmak için Guice'yi nasıl alabilirim?

cevap

7

deneme yanılma bir sürü sonra bu çözümün geldi:

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

Ben açıklama aslında geçerli olduğunu sanırdım son yer ama aniden testi yeşildi.

+0

Vay, aynısı — açıklamaların ait olduğu yer çok şaşırdı –