在Kotlin上的课程,具有可选成员

时间:2018-10-05 13:57:16

标签: json class kotlin

我想在Kotlin设计一个有多个成员的课程。在任何时候,此类的任何对象将只有几个填充的成员,其余所有成员均为null。我也想将其转换为一个json,其中的null成员将根本不存在。我想构造该对象,这样我就不必为填充的每个成员传递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 :(得分:1)

Kotlin支持默认初始化。请注意,这需要构造函数,并且对于这么多的var,您应该使用主构造函数。由于您想要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中使用的原因。由于您没有命名参数,因此您将不得不为所有未填充的变量传递参数。

答案 1 :(得分:1)

data class Foo(var a: String? = null,
           var b: String? = null)

并创建:

Foo(b = "")