Intereting Posts
Каково использование emptyArray () в Котлине Комната Android не возвращает ничего с url как параметр Mock & unit test a Fragment с использованием Spek & Mockito Постоянство помещения: ошибка: сущности и Pojos должны иметь полезный публичный конструктор Использование RxJava для получения отличного результата с помощью Realm и Retrofit Видимость Не работает с Kotlin Kotlin генерирует конструктор, который устанавливает значения по умолчанию для нулевых аргументов getFragmentManager () не работает в Котлине Почему Котлин не разрешает использовать какой-либо код в основном конструкторе? Как я могу прочитать уникальный ключ, предоставленный firebase? Конструктор ненулевой перегрузки Выражение не может быть селектором (происходит после точки) в Котлине Репликация Котлина Spring Boot: добавление @Transactional создает java.lang.ClassNotFoundException: org.aspectj.util.PartialOrder $ PartialComparable Как я могу изменить версию компилятора Kotlin на IntelliJ?

Почему неразрешенная ссылка на попытку доступа к постоянным значениям?

Приложение определяет константы в одном объекте Kotlin:

@file:JvmName("APIConstants") package com.myapp.api object APIConstants { const val HTTP_RESPONSE_CODE_NOT_AUTHORIZED = 401 etc.... } 

Затем они используются в другом классе:

 import com.myapp.api.APIConstants.HTTP_RESPONSE_CODE_NOT_AUTHORIZED etc ... class API { private fun returnBadResponse(response: Response<*>, callback: ApiAuthListener<*>) { if (response.code() == HTTP_RESPONSE_CODE_NOT_AUTHORIZED) { callback.onBadAuthToken() } else { callback.onFailure(response.message(), getServerError(response)) } } 

В этом классе Android Studio (3.0 beta) предоставила подсказку для добавления импорта для константы и не дает никаких указаний на проблему (никаких красных подчеркиваний и т. Д., А постоянная ссылка в методе показана в фиолетовом курсивом тексте, указывающем это было разрешено), но когда я создаю проект, я получаю следующее:

 Error: Unresolved reference: HTTP_RESPONSE_CODE_NOT_AUTHORIZED 

Я попытался очистить кэш IDE и перезапустить его, и сделать чистую сборку, которая не имеет значения. Я попытался удалить аннотацию @JvmName и даже поместить значения const в корневой файл без объекта, но ни один из них не позволяет построить.

Почему класс не может ссылаться на константу, особенно когда IDE решительно предлагает ее разрешить?

Solutions Collecting From Web of "Почему неразрешенная ссылка на попытку доступа к постоянным значениям?"

И это решение … чтобы убедиться, что все исходные файлы Kotlin имеют расширение .kt-файла! В этом случае файл APIConstants назывался «APIConstants», а не «APIConstants.kt», что означает, что среда IDE смогла разрешить ссылки на основе содержимого файла, но инструменты сборки не смогли. Смутно Android Studio показала иконку Kotlin K в имени файла, несмотря на отсутствие расширения .kt.