我也是刚写 Kotlin,比较看中 Kotlin 的对空值的处理,还有协程。
@
aabbcc112233 如果使用了可空类型,那么以后的调用都要加 `!!`,虽然可以从代码层面控制这些 成员变量 非空,但是这似乎让代码变得不够优雅了。
@
holmesabc @
dcalsky 这么写的确可以判断单个 成员变量 ,编译时,成员变量 也是固定的,一个一个判断也不是不可以。
但成员变量很多时,写出来的代码似乎就会很冗长。
现在我是这么写的,不知道有没有优化的余地。
```
class Car {
lateinit var field1: String
lateinit var field2: String
lateinit var field3: String
lateinit var name: String
lateinit var color: String
// 这里还有很多成员变量
companion object {
val memberProperties = Car::class.memberProperties
fun parse(text : String): Car {
val car = Car()
// 这里解析一些文本,并初始化 car 的成员变量
// var car.field1 = xxx
// var car.field2 = xxx
// var car.field3 = xxx
// 检测是否都被初始化
for (memberProperty in memberProperties) {
try {
memberProperty.get(car)
} catch (e: UninitializedPropertyAccessException) {
// 抛出异常,保证外部获得的对象,所有变量都被 initialized
throw Exception("${
memberProperty.name} is uninitialized! Failed to parse text: $text")
}
}
return car
}
}
}
```