2017-02-04 7 views
7

मेरे पास एक Guice Module है जो @Provides -annotated विधि का उपयोग कर List<String> प्रदान करता है।कोटलिन और गुइस में एक सामान्य उदाहरण प्रदान करना

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() कॉल में जोड़ना है। मैं जो चाहता हूं उसे करने के लिए गिसिस कैसे प्राप्त करूं?

उत्तर

7

परीक्षण और त्रुटि के बहुत सारे के बाद मैं इस समाधान पर पहुंचे:

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

यह अंतिम स्थान पर रहा सोचा होगा कि एनोटेशन वास्तव में मान्य है, लेकिन अचानक परीक्षण हरी था।

+0

वाह, वही आश्चर्यचकित है जहां एनोटेशन संबंधित है –

संबंधित मुद्दे