gpt4 book ai didi

java - TypeConverter() 在 Android 中的 Room 的 TypeConverter 错误中具有私有(private)访问权限

转载 作者:太空狗 更新时间:2023-10-29 15:35:34 25 4
gpt4 key购买 nike

我已将 Room 集成到我的项目中。在这个项目中,一些类在 Kotlin 中,一些在 Java 中。在我使用 Android Studio Ctrl+Alt+Shift+K 组合将我的 Java 文件转换为 Kotlin 后,我我们开始面临这个错误:

TypeConverter() has private access in TypeConverter

在生成的 java 类中,在这一行:

private final PointOfInterest.TypeConverter __typeConverter_5 = new PointOfInterest.TypeConverter();

但是 PointOfInterest 类中的 TypeConverter 是公开的。

最佳答案

Don't change the object keyword to class (as the accepted answer suggests). The object declaration guarantees the Singleton pattern.

TypeConverter java 文件自动转换为 kotlin 文件后,您应该用 @JvmStatic 标记所有内部转换器函数。所以 Room 可以将它们用作常规静态函数。

看看官方Android Architecture Components samples ,特别是 GithubTypeConverters.kt .另外,this discussion可能有用。这是我的 DateTypeConverter.kt:

object DateTypeConverter {

@TypeConverter
@JvmStatic
fun toDate(timestamp: Long?) = timestamp?.let { Date(timestamp) }

@TypeConverter
@JvmStatic
fun toTimestamp(date: Date?) = date?.time

}

关于java - TypeConverter() 在 Android 中的 Room 的 TypeConverter 错误中具有私有(private)访问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51438926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com