Несоответствие типа Котлина с дженериками

Недавно я столкнулся с проблемой безопасного навигационного оператора ( ?. ) И дженериков.

 class A<T : Any?>(private var value: T) { fun function() { value?.let { val notNull: Any = it // ^^ // Type mismatch: // Required: Any // Found: T } } } 

Я считаю, что вышеприведенный код не должен работать, но он вызывает ошибку, показанную выше. Я что-то упускаю?

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

 class A<T : Any>(private val value: T?) { // T? instead of T to allow null value fun function() { value?.let { // *it* is already a non-null because you did a ?.let on a T? type } } }