Java >> Java tutorial >  >> Tag >> private

TypeConverter() har privat adgang i TypeConverter-fejl med Room i Android

Ændre ikke object søgeord til class (som det accepterede svar antyder). Objekterklæringen garanterer Singleton-mønsteret.

Efter automatisk konvertering af TypeConverter java-fil til kotlin-fil, skal du markere alle indre konverterfunktioner med @JvmStaticVærelse kan bruge dem som almindelige statiske funktioner.

Tag et kig på de officielle Android Architecture Components-eksempler, specifikt GithubTypeConverters.kt. Også denne diskussion kan være nyttig. Og dette er min DateTypeConverter.kt :

object DateTypeConverter {

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

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

}

I mit særlige tilfælde konverterede jeg min Java-fil til Kotlin ved hjælp af android studio ctrl+alt+shift+k tastekombination. Hvad Android Studio gjorde, er, at det konverterede min class TypeConverter klasser til type object TypeConverter og jeg kunne bare ikke finde ud af, hvorfor min kode holdt op med at virke. Så jeg ændrede manuelt object TypeConverter til class TypeConverter .

En ting mere vedrørende konvertering til Kotlin: I tilfælde af Parcelable-klasse tilføjer en kotlin-konverteret fil i Android Studio ikke @JvmField på CREATOR-feltet. Så du bliver nødt til at tilføje den @JvmField val CREATOR manuelt for at sikre, at klasserne fungerer korrekt.


Java tag