Преобразование аргумента типа шаблона подстановки Java в kotlin - PullRequest
0 голосов
/ 12 января 2019

Пытаясь изучать Kotlin, и на одном из моих классов в Java у меня есть значение, представляющее собой список, содержащий любой класс, который расширяет определенный интерфейс, как показано ниже.

List<? extends foo>

Я ранее пробовал пример модификатора out:

interface foo 
{
   val bar: out List
}

и передача класса через пример модификатора:

interface foo<T> 
{ 
   val bar: List<T> 
}

В результате мы хотим, чтобы, если два класса расширяли этот интерфейс, они оба могли иметь это значение, но у одного мог бы быть список типа A и один список типа B

1 Ответ

0 голосов
/ 12 января 2019

Эквивалент Kotlin для Java List<? extends foo> не зависит от того, как выглядит foo, и не требует его изменения. Это MutableList<out foo> (https://kotlinlang.org/docs/reference/generics.html#use-site-variance-type-projections).

...