Использование в Generics в Multibinder

Я немного запутался в дженериках при использовании com.google.inject.multibindings.Multibinder как com.google.inject.multibindings.Multibinder ниже:

 interface MessageParser<S, T> { fun accept(msg: S): Boolean fun parser(msg: S): T } class Parser1 : MessageParser<Mime, Parsed> class Parser2 : MessageParser<Mime, Parsed> class EmailModule : AbstractModule() { override fun configure() { val parsers = Multibinder.newSetBinder(binder(), MessageParser::class.java) parsers.addBinding().to(Parser1::class.java) parsers.addBinding().to(Parser2::class.java) } } 

Это работает, но теряет всю информацию о дженериках. Можно ли ограничить это конкретным подмножеством парсеров, т. Е. Делать

 val parsers: MessageParser<Mime, Parsed> = Multibinder.newSetBinder(binder(), MessageParser<Mime, Parsed>::class.java) 

Прямо сейчас это создает ошибку компилятора:

Только классы разрешены в левой части литерала класса

Используйте TypeLiteral а не литерал класса, чтобы ввести класс с общим типом ( https://github.com/google/guice/wiki/FrequentlyAskedQuestions#how-to-inject-class-with-generic-type ). См. Multibinding с generics для примера Java. Ниже приведен эквивалентный пример Котлина.

 val parsers = Multibinder.newSetBinder(binder(), object : TypeLiteral<MessageParser<Mime, Parsed>>() {}) 
Intereting Posts
Как передать строку в var без escape-символа в Котлине? Существует ли рекомендуемое соглашение об именах для файлов, которые содержат только функции / методы расширения? Как управлять ресурсами тестирования модулей в Котлине, например, запускать / останавливать соединение с базой данных или встроенный сервер elasticsearch? Как создать экземпляр нового экземпляра родового типа Котлин: Пропустите и используйте функцию параметров 2? Статические переменные в Котлине по-прежнему являются частью экземпляров объектов Kotlin: Создайте и передайте истинные массивы Java (для JNA) Что такое «?» В ArrayList <String?> Как получить исключение в init block kotlin ArgumentCaptor vs InOrder для проверки последующих обратных вызовов с разными аргументами Java vs Kotlin generics Kotlin JS – Доступ к свойствам HTML DOM Как отображать данные с использованием дерева дерева TornadoFX как получить доступ к внутренним свойствам из тестового кода Java Kotlin отражают proguard SmallSortedMap