Intereting Posts
Весенняя ботинок Kotlin Jersey ModelValidationException BadCredentialsException: не удалось получить токен доступа с безопасностью загрузки Oauth2 на GAE Kotlin @JvmStatic и случайное переопределение в сопутствующем объекте Нестандартное представление Android для медленного рендеринга с возможностью выделения фона В чем разница при добавлении частного модификатора к аргументам в конструкторе Kotlin? Использование @JvmOverloads Kotlin с шаблоном Fragment.newInstance () Android Kotlin и Jack не поддерживаются (Android Studio 2.3.2) Любой способ рассказать компилятору Kotlin о том, что ранее вызываемая функция уже проверила значение null Kotlin – Сортировка MutableList на основе свойства объекта Как реализовать функцию Kotlin для представления Выполнение не выполнено для задачи ': app: compileDebugKotlin'. > Внутренняя ошибка компилятора. Подробнее см. Журнал Как закрепить несколько наблюдаемых в языке Kotlin с помощью RxAndroid используя Gson в kotlin для анализа json-массива Kotlin gradle.build ZipException из-за дубликатов Kotlin типа безопасный строитель DSLs, безопасность для самой внешней функции

Котлин, умный литье невозможно из-за сложного выражения

У меня есть этот код:

// allocate one mesh pScene.mNumMeshes = 1 pScene.mMeshes = mutableListOf(AiMesh()) val pMesh = pScene.mMeshes[0] 

Где mMeshes – параметр типа

var mMeshes: MutableList<AiMesh>? = null,

Составители жалуются на последнюю строку, где я пытаюсь объявить pMesh

Смарт-литье в MutableList<AiMesh> невозможно, потому что pScene.mMeshes – сложное выражение

В чем проблема?

Поскольку mMeshes является свойством var , он может меняться между назначением mutableListOf(AiMesh()) и использованием в pScene.mMeshes[0] , а это означает, что на сайте использования он не будет недействительным.

Компилятор обеспечивает нулевую безопасность , рассматривая pScene.mMeshes как обнуляемый MutableList<AiMesh>? и не позволяя вам использовать его как MutableList<AiMesh> (т. е. он не может безопасно выполнять интеллектуальный MutableList<AiMesh> ).

Чтобы исправить это, вы можете просто сделать ненулевое утверждение :

 val pMesh = pScene.mMeshes!![0] 

Или просто повторно введите значение, указанное в списке:

 val pMesh = AiMesh() pScene.mMeshes = mutableListOf(mesh) // use `pMesh` below