Откуда Room узнает, как сопоставить функцию TypeConverter с соответствующим типом данных?Android

Форум для тех, кто программирует под Android
Anonymous
Откуда Room узнает, как сопоставить функцию TypeConverter с соответствующим типом данных?

Сообщение Anonymous »

Я создал фиктивный класс Entity:

Код: Выделить всё

@Entity
data class Entity(
@PrimaryKey
val id: Long?=null,
val data1: DataClass1? = null,
val data2: DataClass2? = null
)

data class DataClass1(
val text: String = "",
val c: Char = ' '
)

data class DataClass2(
val num1: Float = 0.0f,
val num2: Long = 0,
)
Затем я создал класс Converter:

Код: Выделить всё

@ProvidedTypeConverter
class Converters {
@TypeConverter
fun A_YYYYY(json: String): DataClass2 = Gson().fromJson(json, DataClass2::class.java)
@TypeConverter
fun Z_YYYYY(data: DataClass2): String = Gson().toJson(data)
@TypeConverter
fun A_XXXXX(json: String): DataClass1 = Gson().fromJson(json, DataClass1::class.java)
@TypeConverter
fun Z_XXXXX(data: DataClass1): String = Gson().toJson(data)
}
где я намеренно дал методам бессмысленные имена и изменил порядок - метод конвертера для DataClass2 является первым, а для DataClass1 - вторым (порядок противоположен порядку в классе Entity).
Как же Room узнает, как сопоставить методы в сгенерированном файле?
Код в автоматически сгенерированном файле Dao_Impl:

Код: Выделить всё

  @Override
public Object getEntityById(final long id, final Continuation

Подробнее здесь: [url]https://stackoverflow.com/questions/78655899/how-does-room-know-how-match-a-typeconverter-function-to-the-appropriate-datatyp[/url]

Вернуться в «Android»