нереализованный тип возвращаемого значения generi c: как реализовать CoroutineContext.get Kotlin - PullRequest
0 голосов
/ 15 февраля 2020

Я проверял классы и методы, используемые в механизме сопрограммы kotlin. Я наткнулся на класс CoroutineContext и особенно это метод get . CoroutineContext является интерфейсом, а get определяется как:

abstract operator fun <E : Element> get(key: Key<E>): E?

Получение Key<E> в качестве параметра, который просто определяется как

interface Key<E : Element>

Так что методов или свойства, определенные для этого ключа.

Обратите внимание, что E в get не является значением, а используется как тип возвращаемого значения. Я не могу придумать, как проверить, что (ненулевой) объект, который я хочу вернуть, на самом деле относится к этому типу E, поскольку он не овеществлен.

Возможно (по какой-то причине) возможно просто приведите объект к E

//...
return objectThatShouldBeOfTypeE as E

Но правильный ли это путь к go?

...