Класс в Котлине с дополнительными участниками - PullRequest
0 голосов
/ 05 октября 2018

Я хочу разработать класс в Котлине с несколькими членами.В любой момент времени любой объект этого класса будет иметь только несколько заполненных членов, а все остальные будут нулевыми.Я также хотел бы преобразовать это в JSON, где нулевых членов там вообще не будет.Я хочу построить этот объект так, чтобы мне не приходилось передавать значение null для каждого элемента, который я заполняю.Например:

class Foo{
    var a,
    var b,
    var c,
    var d..
    .
    .
    //and so on
}

Я хочу построить этот объект как

Foo(a="a", c="c", x="x")

Все остальные члены должны быть нулевыми.

Когда я создаю JSON для этогоэто должно выглядеть так:

{
    "a"="a",
    "c"="c",
    "x"="x"
}

Также я буду создавать этот объект из Java.Есть ли какое-нибудь решение, которое могло бы помочь мне достичь этого?

Ответы [ 2 ]

0 голосов
/ 05 октября 2018
data class Foo(var a: String? = null,
           var b: String? = null)

И создание:

Foo(b = "")
0 голосов
/ 05 октября 2018

Kotlin поддерживает инициализацию по умолчанию.Обратите внимание, что для этого требуются конструкторы, и с таким количеством переменных вы должны использовать первичный конструктор.Поскольку вы хотите иметь значение NULL, он должен иметь тип NULL, поэтому:

class Foo(
    var a: String? = null,
    var b: String? = null,
    var c: String? = null,
    var d: String? = null
    // and so on
)

Со значениями по умолчанию теперь вы можете выбрать то, что вы передаете.Обратите внимание, что это относится только к Kotlin;Вы должны передать все, если вы создаете объект из Java.То же самое относится и к именованным аргументам, поэтому это будет работать только от Kotlin.Поскольку у вас нет именованных аргументов, вам придется передавать аргументы для всех незаполненных переменных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...