如何处理Kotlin中的空白参数?

在Java中,我们可以做以下

class A{ int id; String name; public A(){} public A(int id, String name){ this.id = id; this.name = name; } // getter/ setter } 

那么我可以创建一个新的对象,并得到如下的JSON

 A a= new A() a.setName("test") System.out.println(new Gson().toJson(a)) 

这给了我结果

 {"name":"test"} 

在kotlin我怎么能实现这个?

我面临的问题是kotlin说原始类型已被初始化。 所以在json中,我得到了idname ; 我不想要

那么如何做到这一点?

Kotlint 认真对待无效安全性,因此您必须明确初始化值。 你的例子可以被翻译成:

 class A(var id: Int? = null, var name: String? = null) 

注意,上面的JVM上都有默认参数和无参数的构造函数 。 这让你写:

 val a = A() 

以及:

 val a = gson.fromJson(json, A::class.java) 

lateinit怎么lateinit

 /* ***************************************************************************/ class A() { lateinit var id : Integer // Integer instead of Int due to lateinit's no-primitives requirement lateinit var name : String constructor(id : Integer, name : String) : this() { this.id = id this.name = name } } /* ***************************************************************************/ /* ***************************************************************************/ fun main(args: Array<String>) { val a = A() a.name = "test" assert(Gson().toJson(a) == """{"name":"test"}""") val aFromJson = Gson().fromJson("""{"name":"test"}""", A::class.java) assert(a.name == "test") } /* ***************************************************************************/ 

使用lateinit的优点是在类内缺乏可为空的属性,因此,你避免处理一堆空检查和?. derefering。