#android #kotlin #generic-type-parameters
#Android #котлин #параметры универсального типа
Вопрос:
Во время разработки проекта я столкнулся с этим странным синтаксисом функции
fun lt;T: Anygt; boo() { do something}
Я знаю, что T указывает на универсальный тип, а Any является корневым классом всех классов в Kotlin и : подразумевает наследование классов или реализацию интерфейса, но что такое T: Any?
Комментарии:
1. — Есть? это супертип Любого. Так что fun lt;T: Любой?gt; boo() { сделай что-нибудь }lt;T: Любой?gt; можно сократить до fun lt;Tgt; boo() { сделай что-нибудь }lt;Tgt; .
Ответ №1:
T : SomeType
задает верхнюю границу универсального типа. T
должно было бы быть SomeType
или быть каким-то подвидом SomeType
.
В этом случае T : Any
устанавливает верхнюю границу равным Any
. Хотя это может показаться бессмысленным, это означает, что T
это не может быть аннулировано.