如何处理Kotlin的空座位?

Mah*_*bub 3 json gson kotlin

在java中我们可以做到以下

class A{
  int id;
  String name;

  public A(){}
  public A(int id, String name){
    this.id = id;
    this.name = name;
  }
  // getter/ setter
}
Run Code Online (Sandbox Code Playgroud)

然后我可以创建一个新的Object并获得如下的json

A a= new A()
a.setName("test")

System.out.println(new Gson().toJson(a))
Run Code Online (Sandbox Code Playgroud)

这给了我结果

{"name":"test"}
Run Code Online (Sandbox Code Playgroud)

在kotlin我怎么能得到这个?

我面临的问题是kotlin说原始类型必须被初始化.因此,在JSON我得到两个idname; 这是我不想要的

那怎么办呢???

mie*_*sol 6

Kotlint严肃对待null安全性因此你必须明确初始化值.您的示例可以转换为:

class A(var id: Int? = null, var name: String? = null)
Run Code Online (Sandbox Code Playgroud)

请注意,上面在JVM上默认参数和无参数构造函数.这是你写的:

val a = A()
Run Code Online (Sandbox Code Playgroud)

以及:

val a = gson.fromJson(json, A::class.java)
Run Code Online (Sandbox Code Playgroud)