Size: a a a

Kotlin Community

2020 May 15

AN

Alexander Nozik in Kotlin Community
Vladimir Sitnikov
Переслано от Vladimir Sitnikov
А как-нибудь можно дебажить сериализацию?

У меня вот такое возниает:

java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
at kotlinx.serialization.internal.PluginGeneratedSerialDescriptor.getElementName(PluginGeneratedSerialDescriptor.kt:102)
at kotlinx.serialization.internal.NamedValueEncoder.elementName(Tagged.kt:148)
at kotlinx.serialization.internal.NamedValueEncoder.getTag(Tagged.kt:146)
at kotlinx.serialization.internal.NamedValueEncoder.getTag(Tagged.kt:145)
at kotlinx.serialization.internal.TaggedEncoder.encodeLongElement(Tagged.kt:111)
at com.app.Tmp.write$Self(Event.kt:18)


@S
erializable
abstract class Event {
...
}

@Serializable
class Tmp: Event() {

И тестовый код

Json(JsonConfiguration.Stable.copy(prettyPrint = true))
.toJson(Tmp.se
rializer(), Tmp().apply {…})
Вообще какой-то знакомый баг
источник

LS

Leonid Startsev in Kotlin Community
Alexander Nozik
@qwwdfsad ? Леонид куда-то выпилился. Видимо достали дурацкими вопросами.
Да я, вроде, здесь

Кажется, это старый добрый multi-module setup с наследованием, который ломается
источник

AN

Alexander Nozik in Kotlin Community
Leonid Startsev
Да я, вроде, здесь

Кажется, это старый добрый multi-module setup с наследованием, который ломается
Чего-то телега по нику перестала находить. Видимо расстроилась из-за блокчейна
источник

AN

Alexander Nozik in Kotlin Community
Leonid Startsev
Да я, вроде, здесь

Кажется, это старый добрый multi-module setup с наследованием, который ломается
В мультимодуле там обычно мусор из другого поля генерится. Но да, что-то похожее у меня вылетало. На следующий котлинконф всем прийти в футболках с надписью serialization #378
источник

LS

Leonid Startsev in Kotlin Community
Не успеете, я прямо сейчас сижу фикс пишу :)
источник

AN

Alexander Nozik in Kotlin Community
Leonid Startsev
Не успеете, я прямо сейчас сижу фикс пишу :)
🎉
источник

VP

Vladimir Petrakovich in Kotlin Community
Alexander Nozik
В мультимодуле там обычно мусор из другого поля генерится. Но да, что-то похожее у меня вылетало. На следующий котлинконф всем прийти в футболках с надписью serialization #378
Я скорее приду в футболке с coroutines #985
источник

AA

Anton Arhipov in Kotlin Community
Leonid Startsev
Не успеете, я прямо сейчас сижу фикс пишу :)
Можно в твиттере флешмоб устроить
источник

AM

Andrew Mikhaylov in Kotlin Community
Друзья, до 2021 года ещё многое может поменяться :)
источник

VS

Vladimir Sitnikov in Kotlin Community
А ещё вопрос по сериализации: невозможно сериализовать класс в котором есть неинициализированное lateinit var

Это тоже известное?
источник

AN

Alexander Nozik in Kotlin Community
Vladimir Sitnikov
А ещё вопрос по сериализации: невозможно сериализовать класс в котором есть неинициализированное lateinit var

Это тоже известное?
сериализовывать что-то с lateinit вообще плохая идея.
источник

AN

Alexander Nozik in Kotlin Community
если можно, замените на lazy
источник

VS

Vladimir Sitnikov in Kotlin Community
Alexander Nozik
сериализовывать что-то с lateinit вообще плохая идея.
Почему же?
источник

AN

Alexander Nozik in Kotlin Community
Vladimir Sitnikov
Почему же?
Потому что порядок инициализации понять вообще почти невозможно. Этот lateinit в какой момент инициализируется?
источник

VS

Vladimir Sitnikov in Kotlin Community
у меня 30 полей. Некоторые необязательные (но если заполнены, то уж точно non-nullable). поэтому lateinit var
источник

AN

Alexander Nozik in Kotlin Community
Vladimir Sitnikov
у меня 30 полей. Некоторые необязательные (но если заполнены, то уж точно non-nullable). поэтому lateinit var
так кто lateinit заполняет?
источник

VS

Vladimir Sitnikov in Kotlin Community
Alexander Nozik
так кто lateinit заполняет?
Сразу после создания
источник

AN

Alexander Nozik in Kotlin Community
Vladimir Sitnikov
Сразу после создания
в конструкторе?
источник

AN

Alexander Nozik in Kotlin Community
понятие "сразу" в смысле инициализации классов - очень растяжимое
источник

VS

Vladimir Sitnikov in Kotlin Community
Нет, после
источник