- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在定义我的用户 SQLite 数据库表,为此,我创建了以下 UserContract 和 UserEntry 类:
class UserContract private constructor(){
class UserEntry private constructor(): BaseColumns {
companion object {
val TABLE_NAME = "users"
val COLUMN_DISPLAY_NAME = "display_name"
val COLUMN_EMAIL = "email"
//...
}
}
}
我面临的问题是我无法访问 BaseColums 实现提供的 _ID 属性:
val columnDisplayName = UserContract.UserEntry.COLUMN_DISPLAY_NAME //It is OK
val columnId = UserContract.UserEntry._ID //Unresolved reference: _ID
Java 中的等效代码运行良好,那么,有谁知道是什么原因或错误在哪里?
最佳答案
您只能使用 BaseColumns._ID
访问它,因为它是一个定义常量的 Java 接口(interface)。
在 Kotlin 中,伴生对象是具有继承性的实际对象,而在 java 中,具有静态方法的类的行为并不像对象。
例如,如果您将 BaseColumns
作为 kotlin 类而不是 java 接口(interface),则可以执行以下操作:
open class KBaseColumns {
val _ID = "_id"
}
class UserContract private constructor(){
class UserEntry private constructor(): BaseColumns {
companion object : KBaseColumns() {
val TABLE_NAME = "users"
val COLUMN_DISPLAY_NAME = "display_name"
val COLUMN_EMAIL = "email"
}
}
}
object Example {
fun someMethod() {
val id = UserContract.UserEntry._ID
}
}
在这种情况下 _ID
是可访问的,因为伴随对象实际上是 KBaseColumns
关于android - 无法访问 BaseColumns 在 Kotlin 中提供了 _ID 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44347113/
我正在阅读此主题:What is the use of BaseColumns in Android ,我了解了如何使用 BaseColumns,您必须在 SELECT 语句中获取 _id。 我还不清
我一直在阅读 Android 中的 BaseColumns]( https://developer.android.com/reference/android/provider/BaseColumns
使用 BaseColumns 与 ContentProvider 有什么区别?它是一个接口(interface),所以它可以用在其他地方......?我不太明白,我在我的 Content Provid
我正在尝试使用 java 创建一个 jasper 报告,但我不确定如何获取列内单元格的详细信息。 在下面的屏幕截图中,我想要突出显示的 JRDesignFrame 对象值。但我无法得到它。 。 我正在
我正在定义我的用户 SQLite 数据库表,为此,我创建了以下 UserContract 和 UserEntry 类: class UserContract private constructor()
我正在浏览 Google 的源代码 IOSched App 并注意到以下代码 fragment 作为其 Content Provider 实现的一部分: 公共(public)静态类 Blocks 实现
我是一名优秀的程序员,十分优秀!