
Alexander
07.10.2018
12:05:33

Konstantine
07.10.2018
12:05:44

Руслан
07.10.2018
12:06:21
А кто-то реально использует object из-за того что он синглтон?
Я вот грепнул, и у меня только кейс с анонимным объектом используется

Google

Руслан
07.10.2018
12:07:49
Ну и понятно, что в sealed может быть удобно

dimiii
07.10.2018
12:08:00
для джавововской сериализации есть механизм readResolve, чтобы подменять прочитанные значения. для jackson наверняка тоже подобное есть, надо покопаться
Спасибо.
Но не думаю, что займусь этим. Друг поделился реализацией тестового задания на scala и я решил ради фана посмотреть, каков будет аналог (аналоговнет). Уже реализация полиморфной де/сериализации на jackson породила такую тошнотворную портянку (по сравнению с akka-http). К ней добавилось это откровение с Object и equals. Еще компилятор выплевывает портянку, начинающуюся
`Error:Kotlin: [Internal Error] java.lang.IllegalStateException: Backend Internal error: Exception during code generation
Cause: Back-end (JVM) Internal error: Couldn't inline method call 'consumeEach' into`
при чистом окне в идее.
Думаю для меня достаточно.

Quantum Harmonizer
07.10.2018
12:09:36

Beholder
07.10.2018
12:10:01
ну а баги в компиляторе и иде бывают, что делать, но их фиксят

Руслан
07.10.2018
12:11:02
Да просто нужно сюда выкинуть тестовое (саму задачу) и мы посмотрим как на котлине идеоматично сделать

Beholder
07.10.2018
12:12:12

dimiii
07.10.2018
12:12:41

Beholder
07.10.2018
12:14:16
все полезности дата класса - то, что автоматически определяется equals, hashcode, и componentN. а если полей нет - то чего там писать?

Руслан
07.10.2018
12:14:27

Google

Bogdan
07.10.2018
12:16:29

Konstantine
07.10.2018
12:17:52

Алексей
07.10.2018
12:18:21
Error:(109, 24) Kotlin: Data class must have at least one primary constructor parameter

Beholder
07.10.2018
12:18:55

dimiii
07.10.2018
12:19:01

Beholder
07.10.2018
12:19:06
и будет то же самое

Алексей
07.10.2018
12:19:12

Beholder
07.10.2018
12:19:29

Алексей
07.10.2018
12:19:47
так вопрос был про data class
вроде как, зачем он нужен, если без полей

Beholder
07.10.2018
12:20:24
зачем писать лишние 4 буквы, если результат такой как ожидается?

dimiii
07.10.2018
12:20:41

Руслан
07.10.2018
12:21:15

Алексей
07.10.2018
12:22:38

Beholder
07.10.2018
12:22:56
очевидно ли, что для анонимного класса в джаве ничего само по себе не генерится?

Руслан
07.10.2018
12:23:08

dimiii
07.10.2018
12:23:29

Алексей
07.10.2018
12:23:33
особенно странны переподвыверты с параллельными класслоадерами чтобы иметь несколько синглтонов

Google

Beholder
07.10.2018
12:24:39
вы уходите в какие-то извращения...

Алексей
07.10.2018
12:25:01

Руслан
07.10.2018
12:25:37

dimiii
07.10.2018
12:25:59
А зачем синглтон вообще нужен?
sealed class Request()
data class Login(val username: String, val password: String) : Request()
data class Ping(val seq: Int) : Request()
object SubscribeTables : Request()
...
when (request) { is Login ->

Алексей
07.10.2018
12:26:19
это sealed классы:)

Руслан
07.10.2018
12:26:43
В которых синглтон

Quantum Harmonizer
07.10.2018
12:26:47

Beholder
07.10.2018
12:26:57
в джава private static final MySingleton INSTANCE = ... тоже может получится несколько штук, если задействовать несколько класслоадеров. раньше это никого не смущало?

Алексей
07.10.2018
12:26:59
object SubscribeTables : Request()
Тем не менее, из контекста не очень ясно, зачем он вам:)

Quantum Harmonizer
07.10.2018
12:27:46

Алексей
07.10.2018
12:27:47
имеется ввиду, что запрос всегда будет одним и тем же?

Beholder
07.10.2018
12:28:15
вообще разумное решение - использовать Спринг, одна штука на проложение, и пусть он бины создаёт

Руслан
07.10.2018
12:29:05

dimiii
07.10.2018
12:30:16
>Товарищи, мы тут говорим, а там всё стоит!
Стоит заводить issue?

Quantum Harmonizer
07.10.2018
12:31:59

dimiii
07.10.2018
12:32:15

Quantum Harmonizer
07.10.2018
12:33:10
есть вот такой, отклонён https://youtrack.jetbrains.com/issue/KT-14540
https://youtrack.jetbrains.com/issue/KT-15378

Google

dimiii
07.10.2018
12:35:33

Руслан
07.10.2018
12:36:07
Generate toString() for objects : KT-4107
https://youtrack.jetbrains.com/issue/KT-4107
Тут ещё интересные коменты

dimiii
07.10.2018
12:39:12

Beholder
07.10.2018
12:44:08
зачем людям всё надо по автомату?

Boris
07.10.2018
12:45:31
а кто-то на еап-е силайна смог плагин к/н поставить?
а, похоже для последнего еап-а нету плагина :-\

Vladimir
07.10.2018
12:56:28

dimiii
07.10.2018
12:58:19

Boris
07.10.2018
12:59:30

Admin
ERROR: S client not available

Vladimir
07.10.2018
13:02:24
А вообще немного странно выполнять сериализацию/десериализацию синглтонов, если это не иерархия sealed class.
В трекере уже не одна issue на тему object:
https://github.com/FasterXML/jackson-module-kotlin/issues/147
https://github.com/FasterXML/jackson-module-kotlin/issues/141
По мне так Jackson должен делать что угодно, но не создавать молча ещё один инстанс объекта, который заведомо должен быть синглтоном.

Beholder
07.10.2018
13:15:52
там кстати был вопрос - как json справляется с чтением энумов?

Quantum Harmonizer
07.10.2018
13:16:25

Aleksandr
07.10.2018
13:23:29
Всем привет!
Хочу уточнить, правильно ли я понял значение модификатора sealed.
Если перед объявлением класса Abc написать sealed, то
получим класс, который открыт для наследования (автоматически будет open), но закрыт для создания подклкассов в отдельных *.kt файлах. В итоге получается, что можно создать наследников только внутри класса Abc. Если я все правильно понял, тозачем это вообще нужно ? К чему такой контроль дочерних классов ?
sealed class Abc {}

Алексей
07.10.2018
13:24:13

Руслан
07.10.2018
13:24:21

Алексей
07.10.2018
13:24:37
но общая суть именно в том, чтобы ограничить число наследников и само наследование

Quantum Harmonizer
07.10.2018
13:25:18

Google

Алексей
07.10.2018
13:25:51
а, перепутал немного

Vladimir
07.10.2018
13:26:22

Aleksandr
07.10.2018
13:26:57
то есть ради тотального контроля наследников, чтобы все были в куче

Алексей
07.10.2018
13:27:15

Aleksandr
07.10.2018
13:27:32
на практике в андрод в каких случаях это можно заюзать ?

Алексей
07.10.2018
13:28:05
из плюсов - в when можно else не указывать, если аргумент относится к sealed классу
То есть для создания ограниченного и строгого списка возможных запросов к серверу, например
или ошибок
но это общая возможность

Quantum Harmonizer
07.10.2018
13:29:12

Aleksandr
07.10.2018
13:29:14
круто!!
Благодарю всех за помощь!!! ????

Beholder
07.10.2018
13:30:45
тут должен был прийти хаскелист и крикнуть "ну вы чё, это ж алгебраические типы, как без них жить!" :)

Igor
07.10.2018
13:55:54
Тогда придется начать с объяснения “что такое атд” (и как плохо жить без паттерн-матчинга)))

Egor
07.10.2018
13:58:30
Ща кто-нибудь бугуртнет, да зачем этот маттерн-патчинг вообще нужен

Boris
07.10.2018
13:59:38
мда, к/н 0.9 похоже сейчас не пощупать.. разве что только найти старый еап
но и старый еап теперь нельзя скачать, раньше вроде был архив
интересно, что последний еап вышел 2 числа, а плагин уже 3 и всё равно он для старой версии

Oleg
07.10.2018
14:08:41

Boris
07.10.2018
14:09:32
да не, там проблема в том, что плагина для ide нету для последнего eap-а
clion-а