无法在 Kotlin 中对象的超类构造函数中使用常量

Viv*_*dav 1 object kotlin

这样做工作正常:

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)

为什么会出现这种情况以及如何解决它(除了将对象转换为类)?

Ten*_*r04 5

将常量移到对象外。它们不能在其构造函数中使用,因为它们在对象被初始化之前不会被初始化。

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)