Java TypeConverter()在Android中的TypeConverter错误中具有私有访问权限
我已经在我的项目中整合了房间。在这个项目中,有些类在Kotlin中,有些在Java中。在我使用Android Studio Ctrl+Alt+Shift+K组合将Java文件转换为Kotlin后,我开始面临以下错误: TypeConverter()在TypeConverter中具有私有访问权限 在生成的java类中,在这一行:Java TypeConverter()在Android中的TypeConverter错误中具有私有访问权限,java,android,android-studio,kotlin,android-room,Java,Android,Android Studio,Kotlin,Android Room,我已经在我的项目中整合了房间。在这个项目中,有些类在Kotlin中,有些在Java中。在我使用Android Studio Ctrl+Alt+Shift+K组合将Java文件转换为Kotlin后,我开始面临以下错误: TypeConverter()在TypeConverter中具有私有访问权限 在生成的java类中,在这一行: private final PointOfInterest.TypeConverter __typeConverter_5 = new PointOfInterest.T
private final PointOfInterest.TypeConverter __typeConverter_5 = new PointOfInterest.TypeConverter();
但是
兴趣点
类中的类型转换器
是公共的。在我的特殊情况下,我使用android studio ctrl+alt+shift+k组合键将Java文件转换为Kotlin。android studio所做的是,它将我的类TypeConverter
类转换为对象TypeConverter
类型,而我就是不明白为什么我的代码停止工作。因此,我手动将对象类型转换器
更改为类类型转换器
关于到Kotlin的转换还有一点:对于Parcelable类,android studio中的Kotlin转换文件不会在CREATOR字段中添加@JvmField。因此,您必须手动添加它@JvmField val CREATOR
,以确保Parcelable类正常工作
不要将对象
关键字更改为类
(正如公认的答案所示)。这保证了单例模式
在将TypeConverter
java文件自动转换为kotlin文件后,您应该标记所有内部转换器函数,以便Room可以将它们用作常规静态函数
看看这位官员,特别是那位。而且,它可能是有用的。这是我的日期类型转换器.kt
:
object DateTypeConverter {
@TypeConverter
@JvmStatic
fun toDate(timestamp: Long?) = timestamp?.let { Date(timestamp) }
@TypeConverter
@JvmStatic
fun toTimestamp(date: Date?) = date?.time
}
你能用
TypeConverter
添加你的PointOfInterest
类吗?@JvmStatic
是最基本的部分(这很有意义)。谢谢