提问者:小点点

kotlin const val Const'val'仅允许在顶层或对象中使用


在我的静态编程语言项目中,我想在编译时声明常量:

所以我用这个:

@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个答案

匿名用户

const vals不能在类中。对您来说,这意味着您需要在顶级、对象或配套对象中声明它(这也正是错误消息所说的)。

由于您的值是私有的,因此配套对象是您可以使用的两个选项之一:

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

但是,它需要是公共的才能被访问。它也可以是内部的,但这再次取决于您想要访问的内容。