Откуда 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]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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