https://kotlinlang.org logo
#russian
Title
# russian
e

elizarov

10/05/2017, 8:03 PM
Скорее я бы сказал, что используемые вам serialization framworks очень Java-центричные и не понимают идею data class и почему вообще создавать классы а потом в них всё проставлять это плохо.
4
l

lewik

10/05/2017, 8:22 PM
Вторую часть предложения я вообще не понял про
создавать классы а потом в них всё проставлять это плохо
. Нашел, что как раз для таких сериализаторов (jackson) и сделана фишка создания пустого конструктора, когда у всех полей есть умолчания
e

elizarov

10/05/2017, 8:31 PM
Ноборот. Jackon сделан так, чтобы было удобно серилазовать классы, которые принято присать в Java — POJOs. У них обычно есть default constructor и куча методов, чтобы менять. На Котлине тоже такие можно писать:
Copy code
class Person {
    var firstName: String = ""
    var lastName: String = ""
}
Да, Котлин умеет “дружить” с Java миром через значения по умолчанию для главного конструктора:
Copy code
class Person(var firstName: String = "", var lastName: String = "")
Но это не есть идеоматичный Котлин. Зачем вообще иметь тут
var
. Чем меньше var, тем идеоматичней:
Copy code
class Person(val firstName: String, val lastName: String)
Вот это идеоматично, безопасно и immutable, но не работает “из коробки” с Jackson.
Поставьте
jackson-module-kotlin
и всё заработает
👍 3
l

lewik

10/05/2017, 8:38 PM
Ого, круто, сейчас попробую
4 Views