在我的静态编程语言项目中,我想在编译时声明常量:
所以我用这个:
@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
如何声明编译时间常量?
const val
s不能在类中。对您来说,这意味着您需要在顶级、对象或配套对象中声明它(这也正是错误消息所说的)。
由于您的值是私有的,因此配套对象
是您可以使用的两个选项之一:
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"
}
但是,它需要是公共的才能被访问。它也可以是内部的,但这再次取决于您想要访问的内容。