@kotlin_lang

Страница 544 из 982
Igor
15.02.2018
09:47:43
закрепить бы такое в чатике
@HeapyHop мб закинешь ссылочку на youtube в @TheDailyKotlin

Руслан
15.02.2018
09:48:30
Да, я просто ссылочку на трансляцию не видел

Igor
15.02.2018
09:50:49
Господа, кто-нибудь пробовал kotlin-serialization? Я не пойму, то что она возвращает пустой json для sealed class это баг или фича? P.S. почитал https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/examples.md - там в примерах вобще нет sealed P.P.S. для обычных классов все работает

Руслан
15.02.2018
09:51:17
Ссылка на прямую трансляцию PS JAVA MEETUP #9, на которой Андрей Бреслав выступит с темой "Kotlin: практика разработки современного языка программирования" https://www.youtube.com/watch?v=YbRGHWcl6ZE

Google
Igor
15.02.2018
10:13:05
Жалко, а есть вообще какие-нибудь простые (что бы на android запустились) способы превратит sealed-class в строку и обратно?

mozomig
15.02.2018
10:26:14
Ребят пишу custom deserialize для jackson, вроде всё написал но он его не использует почему-то, вот код 3-х классов https://pastebin.com/PsP4TUbb почему может не работать?

Руслан
15.02.2018
10:29:18
JsonDeserialize вешается на setter а не класс согласно доке

т.е. как-то так нужно class Example { @JsonDeserialize var a: String = "" }

mozomig
15.02.2018
10:34:12
@JsonDeserialize(using = ActionDeserializer::class) var action: ActionTypeEnum = ActionTypeEnum.UNKNOWN не работает

Руслан
15.02.2018
10:35:37
Должно и на поле работать

mozomig
15.02.2018
10:37:10
@set:JsonDeserialize(
не заработало

Bogdan
15.02.2018
10:39:43
не заработало
а эти анотации в райнтайме работают?

если да нужно подключить либу для котлина, анотейшен процесинг

Kapt

Google
Руслан
15.02.2018
10:41:51
нет, не нужно никаких каптов

ошибка то какая

mozomig
15.02.2018
10:43:07
ошибка то какая
ошибки нет, просто юзаю spring но нужен кастом десириализатор, написал, а он все равно юзает свой какой-то

Руслан
15.02.2018
10:43:50
так возьми для начала просто main и попробуй проверить без спринга

со спрингом джексоном всегда траблы

а если возьмешь rest template то вообще ад

mozomig
15.02.2018
10:44:59
буду разбираться

Bogdan
15.02.2018
10:47:03
буду разбираться
https://github.com/FasterXML/jackson-module-kotlin ты это юзаешь?

Руслан
15.02.2018
10:51:26
да и без этого работает https://pastebin.com/ZVSSrpFL

mozomig
15.02.2018
10:53:46
хм, значит спринг не хочет что-то делать

Alexey
15.02.2018
10:54:54
Используйте спринг говорили они, всё будет легко и понятно говорили они

Руслан
15.02.2018
10:55:14
Просто и быстро. И главное прозрачно

Alexey
15.02.2018
10:55:39
дааааа, прозрачно

mozomig
15.02.2018
10:55:45
Увы, жестокая жизнь

Bogdan
15.02.2018
10:55:53
да
Caveats почитай на их странице

Алексей
15.02.2018
11:00:23
Всем привет) Есть метод hashCode() в дальнейшем при добавлении новых полей в класс, для корректной работы приложения, нужно эти поля добавить и в hashCode(). Я бы мог просто добавить data class и всё, hashCode не надо постоянно обновлять. Но у меня есть одно поле которое не должно быть в hashCode, что делать?))

Руслан
15.02.2018
11:01:08
Смириться и поддерживать

Алексей
15.02.2018
11:03:57
печально

Kirill
15.02.2018
11:07:14
Всем привет) Есть метод hashCode() в дальнейшем при добавлении новых полей в класс, для корректной работы приложения, нужно эти поля добавить и в hashCode(). Я бы мог просто добавить data class и всё, hashCode не надо постоянно обновлять. Но у меня есть одно поле которое не должно быть в hashCode, что делать?))
можно сделать класс, в котором будет поле, которое не должно быть в hash code и сделать внутри класса поле, которое будет data class, в который ты будешь дописывать поля ну и потом override fun hashCode() = data.hashcode() :D

Google
Mikhail
15.02.2018
11:10:10
Можно сделать наоборот

Дата класс и полем сделать класс обертку с поломанным хешкодом

Mikhail
15.02.2018
11:10:50
И тогда он не будет влиять на хешкод класса

Это как бы нарушает контракт метода hashCode, и возможно он тебе вообще не нужен
Не нарушает, если это поле также не учавствует в еквалс

Alexey
15.02.2018
11:11:53
Звучит как лишнее поле

Mikhail
15.02.2018
11:12:09
Нууу, чем программист не тешился...

Алексей
15.02.2018
11:12:41
спасибо?

Bogdan
15.02.2018
11:12:54
Звучит как лишнее поле
есть вспомагательные поля, которые например не сериализуются, так же может быть и с хеш-кодом

Alexey
15.02.2018
11:13:03
А потом какой нибудь мальчик пихнёт этот объект в мапу, а на следующее утро его найдут мёртвым

Mikhail
15.02.2018
11:14:42
А потом какой нибудь мальчик пихнёт этот объект в мапу, а на следующее утро его найдут мёртвым
А в чем проблема, если это служебное поле, которое не меняет ситуацию?)

Alexey
15.02.2018
11:15:25
Ладно, не буду из своего болото в ваше плевать, если у вас это считается нормой

Igor
15.02.2018
11:16:24
Жалко, а есть вообще какие-нибудь простые (что бы на android запустились) способы превратит sealed-class в строку и обратно?
Удалось +- сериализовать sealed class через Jackson, только пришлось: 1) Использовать маппер с включенной “полиморфной сериализацией” ObjectMapper() .registerModule(KotlinModule()) .enableDefaultTyping(DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY) 2) Оборачивать sealed в другой класс, у которого тип свой-ва будет “базовым классом” class Wrapper(val case: SealedClassName) иначе “defaultTyping” видит что классы final и не работает Пока единственный минус, что синглтон (object) кейсы не удается распарсить тк у них нет публичного конструктора. P.S. подобный трюк (через обертку) в kotlin-serialization выдает ошибку IndexOutOfBoundsException

Bogdan
15.02.2018
11:17:39
А потом какой нибудь мальчик пихнёт этот объект в мапу, а на следующее утро его найдут мёртвым
ну например в JavaFX есть проперти width и prefWidth, второе меняет первое если это возможно, оно по сути служебное

Alexey
15.02.2018
11:18:16
JavaFX явно не пример хорошего дизайна

Bogdan
15.02.2018
11:18:26
Vitalii
15.02.2018
11:18:57
Google
Bogdan
15.02.2018
11:19:04
JavaFX явно не пример хорошего дизайна
но это дает небольшую гибкость

А что с ним не так?
у него есть служебныые поля)

Алексей
15.02.2018
12:05:52
Java + lombok?)
Да блин, из за одной фичи класс на джаву переписывать

Kirill
15.02.2018
12:06:17
Ну либо так, либо поддерживать hashCode

Vitalii
15.02.2018
12:06:40
Ну так просто перегрузи hashCode() тогда и свой напиши.

Kirill
15.02.2018
12:06:43
Впрочем можно ещё какой-нибудь постпроцессор написать

и извращаться над байткодом и вот это вот всё

Алексей
15.02.2018
12:07:26
и извращаться над байткодом и вот это вот всё
А можно пример как это сделать?

Kirill
15.02.2018
12:07:41
ты уверен что оно тебе надо?)

Алексей
15.02.2018
12:08:08
Нет, но сам факт что это можно, интересно))

Sergey
15.02.2018
12:10:09
Сорян )

Kirill
15.02.2018
12:10:24
ByteBuddy().redefine<Any>(clazz, classLocator)

ну и читать про ByteBuddy

но эт прям дичь

и лютый оверкил для таких целей

Vadim
15.02.2018
12:24:14
Во viewmodel у меня есть val userName: ObservableField<String> = ObservableField("name") Чтобы забиндить во вьюху, мне обязательно нужно обоваричать это в метод чтобы вынуть String? fun getUserName(): String { return userName.get() } и потом вызывать: android:text="@{viewmodel.getUserName()}" ?

или я могу как-то напрямую в android:text прописать ObservableField ?

Google

Страница 544 из 982