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

Object 无法在Kotlin中的对象超类构造函数中使用常量,object,kotlin,Object,Kotlin,这样做很好: 类DBHelper:SQLiteOpenHelperGLOBAL\u上下文,数据库\u名称,null,数据库\u版本{ 伴星{ private const val DATABASE_NAME=DATABASE.db 私有const val数据库_版本=1 } } 但这不起作用: 对象DBHelper:SQLiteOpenHelperGLOBAL\u上下文,数据库\u名称,null,数据库\u版本{ private const val DATABASE_NAME=DATABASE.d

这样做很好:

类DBHelper:SQLiteOpenHelperGLOBAL\u上下文,数据库\u名称,null,数据库\u版本{ 伴星{ private const val DATABASE_NAME=DATABASE.db 私有const val数据库_版本=1 } } 但这不起作用:

对象DBHelper:SQLiteOpenHelperGLOBAL\u上下文,数据库\u名称,null,数据库\u版本{ private const val DATABASE_NAME=DATABASE.db 私有const val数据库_版本=1 }
为什么会出现这种情况?除了将对象转换为类之外,如何解决这种情况?

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

private const val DATABASE_NAME = "database.db"
private const val DATABASE_VERSION = 1

object DBHelper : SQLiteOpenHelper(GLOBAL_CONTEXT, DATABASE_NAME,null, DATABASE_VERSION) {
}

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

private const val DATABASE_NAME = "database.db"
private const val DATABASE_VERSION = 1

object DBHelper : SQLiteOpenHelper(GLOBAL_CONTEXT, DATABASE_NAME,null, DATABASE_VERSION) {
}

可能是因为伴生对象可以在类之前存在,但是单例对象的字段只有在调用超级构造函数之后才初始化。我建议指定问题中出现的编译错误可能是因为伴生对象可以在类之前存在,但是,单例对象的字段只有在调用超级构造函数之后才初始化。我建议您指定问题中出现的编译错误