我想在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创建此对象。有一些解决方法可以帮助我实现这一目标吗?
答案 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 = "")