Intereting Posts
Джексон не может загружать типы JDK7 на Android Почему я получаю несоответствие типа при попытке вернуть значение для проверенного общего параметра? Использование константы java в параметре аннотации Kotlin Kotlin: изменения, сделанные в супер-конструкторе, перезаписываются Наследование класса с помощью основного конструктора ERROR: error.NonExistentClass Kotlin В проекте с несколькими модулями Dagger Есть ли способ перебрать все поля класса данных без использования отражения? Android – использование генераторов для 1 повторного вызова RxJava, возвращающего различные типы, используя тот же интерфейс TimeZone не показывает Как реализовать экспоненциально уменьшающуюся средневзвешенную Как отобразить частичный экран камеры в kotlin Firebase неразрешенный супертип с Kotlin на Android JNI GetShortArrayElements не работает с SIGSEGV SEGV_ACCERR SupportfragmentManager становится null android kotlin Ошибка Spring MVC 404 Плохой запрос Kotlin

Предоставление общего экземпляра в Kotlin & Guice

У меня есть Module Guice, который предоставляет List<String> с помощью метода @Provides -annotated.

 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() ничего не меняет, как и добавление его к object в вызове getInstance() . Как заставить Guice делать то, что я хочу?

    После многих проб и ошибок я пришел к этому решению:

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

    Это последнее место, которое я бы подумал, что аннотация действительно действительна, но внезапно тест был зеленым.