Вы, вероятно, сделали Java раньше, верно? Any
является Kotlin эквивалентом Javas Object
, что означает, что в Kotlin каждый объект неявно наследуется от Any
, или, другими словами, Any
может использоваться в качестве заполнителя для any возможный класс.
В вашем случае вы могли бы попробовать разыграть ваш результат, я думаю, что это сработает:
requestContent = call.receive() as T
Эта строка означает, вы знаете, что call.receive()
действительно является объектом класс T
или его подкласс. Это приведет к ошибке, если это предположение неверно.
// Редактировать: более понятный пример наследования.
Возьмите следующий пример, у вас есть класс Animal
и два подкласса Dog
и Cat
. Теперь ваш график наследования выглядит следующим образом:
Animal
/ \
/ \
V V
Dog Cat
Итак, это говорит: каждая кошка - животное, а каждая собака - животное. Но если у вас есть животное, вы не можете сказать, собака это или кошка.
В вашем конкретном случае c, Any
- это класс Animal
, а fe Dog
- это ваш T
. Так что T
действительно наследуется от Any
, но вы не знаете, действительно ли это T
или, может быть, что-то еще, но если вы знаете, что в этом конкретном c случае это T
, вы можете брось его.