我在我的项目中集成了Room . 在这个项目中,一些类在Kotlin中,一些在Java中 . 在使用Android Studio Ctrl Alt Shift K组合将我的Java文件转换为Kotlin后,我开始面临此错误:
TypeConverter()在TypeConverter中具有私有访问权限
在生成的java类中,在这一行:
private final PointOfInterest.TypeConverter __typeConverter_5 = new PointOfInterest.TypeConverter();
但 PointOfInterest
中的 TypeConverter
是公开的 .
2 回答
我的特殊情况,我使用android studio ctrl alt shift k组合将我的Java文件转换为Kotlin . android工作室做了什么,它将我的
class TypeConverter
类转换为object TypeConverter
类型,我只是想不通为什么我的代码停止工作 . 所以,我手动将object TypeConverter
更改为class TypeConverter
.关于转换为Kotlin还有一点:在Parcelable类的情况下,在android studio中kotlin转换文件并不需要手动添加
@JvmField val CREATOR
以确保Parcelable类正常工作 .请勿将
object
关键字更改为class
. object declaration保证Singleton模式 .在将
TypeConverter
java文件自动转换为kotlin文件后,应使用@JvmStatic标记所有内部转换器函数,以便Room可以将它们用作常规静态函数 .看看官方Android Architecture Components samples,特别是GithubTypeConverters.kt . 此外,this discussion可能很有用 . 这是我的
DateTypeConverter.kt
: