Rah*_*ogi 3 java android kotlin android-studio android-room
我已将Room集成到我的项目中。在这个项目中,有些类在Kotlin中,有些在Java中。我使用Android Studio中转换我的Java文件后,科特林Ctrl+ Alt+ Shift+ K的组合,我已经开始面临这个错误:
TypeConverter()在TypeConverter中具有私有访问权限
在生成的java类中,在这一行:
private final PointOfInterest.TypeConverter __typeConverter_5 = new PointOfInterest.TypeConverter();
Run Code Online (Sandbox Code Playgroud)
但是TypeConverter在PointOfInterest课堂上是公开的。
Rah*_*ogi 15
在我的特殊情况下,我使用android studio ctrl + alt + shift + k组合键将Java文件转换为Kotlin。android studio所做的就是,它将我的class TypeConverter类转换为type,object TypeConverter而我只是想不出为什么我的代码停止工作。因此,我手动更改object TypeConverter为class TypeConverter。
关于转换为Kotlin的另一点:如果是Parcelable类,则在android studio中转换为Kotlin的文件不会在CREATOR字段上添加@JvmField。因此,您必须@JvmField val CREATOR手动添加它以确保Parcelable类正常工作。
请勿将object关键字更改为class。该对象的声明,保证Singleton模式。
在将TypeConverterJava文件自动转换为kotlin文件后,您应该用标记所有内部转换器函数,@JvmStatic以便Room可以将它们用作常规静态函数。
看一下官方的Android Architecture Components示例,特别是GithubTypeConverters.kt。同样,该讨论可能是有用的。这是我的DateTypeConverter.kt:
object DateTypeConverter {
@TypeConverter
@JvmStatic
fun toDate(timestamp: Long?) = timestamp?.let { Date(timestamp) }
@TypeConverter
@JvmStatic
fun toTimestamp(date: Date?) = date?.time
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1610 次 |
| 最近记录: |