Size: a a a

2017 September 17

KT

Konstantin Tskhovrebov in GitFox
Eugene Shapovalov
вы имели ввиду, что в abstract класс не нужны аннотации gson?
Why do you need constructor for abstract class? It will be constructed by Gson reflection.
Смотрите: вы деаете базовый класс для нескольких сущностей (Todo и MergeRequest), зачем вам конструктор для этого базового класса?
источник

ES

Eugene Shapovalov in GitFox
так в нём описаны общие свойства
источник

KT

Konstantin Tskhovrebov in GitFox
Eugene Shapovalov
эта логика будет применена ко всем сущностям в приложении, если нет, то в data класс она реализована именно так?
description will not null (Gson set it). Because we know it (from API doc)
Это вытекающее следствие. Если вы создадите базовый класс с final полями, то их надо будет проинициализировать.

Поэтому есть красивый финт:
1) вы делаете приватное поле и объявляете его нулл
2) но оно не нуллабл по документации! Gson плевать на то что оно файнал, он легко его перепишет (рефлексия)
3) для получения этого поля пишется field get() = _field!! - это даст нам ненуллабл поле
источник

KT

Konstantin Tskhovrebov in GitFox
Eugene Shapovalov
так в нём описаны общие свойства
как это связано с конструктором?
источник

KT

Konstantin Tskhovrebov in GitFox
общие свойства и конструктор - абсолютно несвязанные вещи
источник

ES

Eugene Shapovalov in GitFox
Konstantin Tskhovrebov
Это вытекающее следствие. Если вы создадите базовый класс с final полями, то их надо будет проинициализировать.

Поэтому есть красивый финт:
1) вы делаете приватное поле и объявляете его нулл
2) но оно не нуллабл по документации! Gson плевать на то что оно файнал, он легко его перепишет (рефлексия)
3) для получения этого поля пишется field get() = _field!! - это даст нам ненуллабл поле
классный финт, сделаю
источник

ES

Eugene Shapovalov in GitFox
Konstantin Tskhovrebov
как это связано с конструктором?
так в Котлине же нет полей, или я что-то не знаю?
источник

KT

Konstantin Tskhovrebov in GitFox
???
источник

KT

Konstantin Tskhovrebov in GitFox
мы видимо о разном говорим
источник

ES

Eugene Shapovalov in GitFox
1 мин
источник

ES

Eugene Shapovalov in GitFox
плиз
источник

ES

Eugene Shapovalov in GitFox
abstract class A {
   abstract val id: String
}

class B(override @SerializedName("id") val id: String) : A() {
}
источник

ES

Eugene Shapovalov in GitFox
это похоже на то, что вы имели ввиду?
источник

KT

Konstantin Tskhovrebov in GitFox
зачем поле абстрактоное?
источник

KT

Konstantin Tskhovrebov in GitFox
не надо его тянуть в класс В
источник

KT

Konstantin Tskhovrebov in GitFox
зачем вам конструктор?
источник

KT

Konstantin Tskhovrebov in GitFox
этот объект приходит с сервера
источник

KT

Konstantin Tskhovrebov in GitFox
мы его не будем собирать в приложении сами
источник

KT

Konstantin Tskhovrebov in GitFox
на данный момент уж точно
источник

KT

Konstantin Tskhovrebov in GitFox
когда есть наследование - то дата классы отпадают. и мы не делаем конструкторы везде. только там где будет реально необходимо.
источник