在我的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
如何声明编译时间常数?
答案 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"
}
但是它必须是公开的才能被访问。或者是内部的,但这又取决于您的目标范围。