【发布时间】:2021-06-01 00:42:02
【问题描述】:
我正在开发一个 Android 应用程序,我在常量文件中创建了一个 object 来存储一些状态值。在我的一个课程中,我有一个Status 类型的变量。我需要从后端获得的一些数据中设置状态值。但是,数据采用String 形式。有什么方法可以检查数据字符串是否在Status 对象中,并可能将此字符串转换为Status?
注意:可以有许多自定义类型,例如 Status,因此考虑到它们的性能影响,我想尽可能避免使用枚举。
考虑以下场景
// Constants.kt
object Constants {
...
object Status {
const val OKAY = "okay"
const val DONE = "done"
const val PENDING = "pending"
}
...
}
// SomeClass.kt
class SomeClass {
private var status: Status? = null
setStatus(status: Status) {
this.status = status
}
}
// SomeOtherClass.kt
fun updateStatus() {
val someClass = SomeClass()
val status: String = getSomeStringFromServer()
// add some check to confirm whether status is actually one of Constants.Status
someClass.setStatus(status) // It wouldn't work because type String and Status are incompatible
}
【问题讨论】:
-
我不确定如果后端的字符串与
Status类变量中的一个匹配会发生什么