这样做工作正常:
class DBHelper : SQLiteOpenHelper(GLOBAL_CONTEXT, DATABASE_NAME,null, DATABASE_VERSION) {
companion object {
private const val DATABASE_NAME = "database.db"
private const val DATABASE_VERSION = 1
}
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用:
object DBHelper : SQLiteOpenHelper(GLOBAL_CONTEXT, DATABASE_NAME,null, DATABASE_VERSION) {
private const val DATABASE_NAME = "database.db"
private const val DATABASE_VERSION = 1
}
Run Code Online (Sandbox Code Playgroud)
为什么会出现这种情况以及如何解决它(除了将对象转换为类)?
将常量移到对象外。它们不能在其构造函数中使用,因为它们在对象被初始化之前不会被初始化。
private const val DATABASE_NAME = "database.db"
private const val DATABASE_VERSION = 1
object DBHelper : SQLiteOpenHelper(GLOBAL_CONTEXT, DATABASE_NAME,null, DATABASE_VERSION) {
}
Run Code Online (Sandbox Code Playgroud)