Понимание общих параметров в абстрактном классе - PullRequest
0 голосов
/ 08 января 2019

В документации Kotlin они показывают, как включить параметры типа:

class Box<T>(t: T) {
    var value = t
}

Это простой пример. Но я встретил один, который выглядит так:

abstract class SomeAdapter<T, WH: SomeViewHolder>(private val viewModel: SomeModel<T>?) {

}

Как мне это интерпретировать? Должен ли я интерпретировать это как:

SomeAdapter принимает два параметра при его создании - T и WH. И конструктор принимает viewModel.

Ответы [ 2 ]

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

Так как ваш заголовок идет:

Понимание общих параметров в абстрактном классе

вопрос под вопросом: было бы иначе (относительно общих типов), если бы SomeAdapter не было бы абстрактным. Ответ: №

В этом конкретном примере T может быть Any?, а WH может быть любым подклассом SomeAdapter или SomeAdapter (если SomeAdapter не является абстрактным).

Типы T и WH фиксируются во время компиляции (см. Стирание типа ).

Итак, вы должны видеть обобщенные значения, например, переменную для типа.

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

Как вы уже упоминали, этот класс имеет два универсальных типа: T и WH. Последний действительно определяет верхнюю границу SomeViewHolder, что позволит использовать только подтипы этой верхней границы в качестве универсального типа WH.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...