首页 > 解决方案 > 带有可选成员的 Kotlin 类

问题描述

我想在 Kotlin 中设计一个有多个成员的类。在任何时候,此类的任何对象都只会有几个填充成员,其余的都是空的。我还想将其转换为 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 创建这个对象。是否有一些解决方法可以帮助我实现这一目标?

标签: jsonclasskotlin

解决方案


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


推荐阅读