kotlin const val只能在顶层或对象中使用Const'val'

时间:2019-04-27 12:34:27

标签: kotlin

在我的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 个答案:

答案 0 :(得分:7)

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"
}

但是它必须是公开的才能被访问。或者是内部的,但这又取决于您的目标范围。