kotlin const val Const 'val' разрешены только на верхнем уровне или в объектах - PullRequest
3 голосов
/ 27 апреля 2019

В моем проекте Kotlin я хочу объявить константу во время компиляции:

Поэтому я использую это:

@RunWith(AndroidJUnit4::class)
class TradersActivityTest {

    private lateinit var mockServer: MockWebServer
    private const val ONE_TR = "no_wallets.json" // error here

Но у меня есть ошибка времени компиляции:

Const 'val' are only allowed on top level or in objects

Как объявить постоянную времени компиляции?

1 Ответ

8 голосов
/ 27 апреля 2019

const val с не может быть в классе. Для вас это означает, что вам нужно объявить его на верхнем уровне, в объекте или в объекте-компаньоне (что также является именно тем, что говорится в сообщении об ошибке).

Учитывая, что это личное, companion object один из двух вариантов, которые вы можете применить:

class TradersActivityTest {
    ...
    companion object {
        private const val ONE_TR = "no_wallets.json"
    }
}

Это делает его доступным только для класса.


Второй вариант - на высшем уровне. Однако обратите внимание, что это предоставляет его остальной части файла, а не только одному классу:

private const val ONE_TR = "no_wallets.json"

...

class TradersActivityTest {
    ...
}

И просто для полноты этого ответа, как я уже говорил, третьим вариантом был объект:

object Constants {
    const val ONE_TR = "no_wallets.json"
}

Но он должен быть общедоступным для доступа. Или, альтернативно, внутренний, но это опять же зависит от вашей целевой области.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...