json - 带有可选成员的 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 创建这个对象。是否有一些解决方法可以帮助我实现这一目标?
解决方案
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。由于您没有命名参数,因此您将被迫为所有未填充的变量传递参数。
推荐阅读
- python - 如果列中的所有标记都包含python中的任何停用词列表,如何过滤行?
- c# - EF Core 获取树层次结构直到最后一个孩子
- python - 如何将值从 python 脚本传递给 bash 脚本
- reactjs - redux store 应该如何在大型 React 应用中使用?
- d3.js - 如何获取选定的节点 ID - Js Tree ContextMenu
- c# - 带有参数 Mediatr 和 Moq 的模拟处理程序
- android - Firebase Crashlytic 不显示带有 LLD 链接器 Android 应用程序的堆栈 strace
- vb.net - 如何在循环中使用变量引用控件?
- qt - 导航到不同页面时,QML 保存页面的最后状态
- php - 按内部循环 PDO 排序