在 Kotlin 中,数据类的属性可以有多种类型吗?例如:
val CurrentValue: Double?|String 或 val CurrentValue: String|Array?
我在文档中找不到它。
Som*_*boy 12
联合类型在 Kotlin 中不是一个东西。
您可以使用 asealed class代替。
sealed class CurrentValue<T>(val value: T) {
class TextualValue(value: String) : CurrentValue<String>(value)
class NumericValue(value: Double) : CurrentValue<Double>(value)
}
Run Code Online (Sandbox Code Playgroud)
然后您可以使用详尽的when表达式(类似于switch其他语言)以便以类型安全的方式访问该值:
fun doSomething(value: CurrentValue<*>) {
when(value) {
is TextualValue -> value.value // is recognised as a String
is NumericValue -> value.value // is recognised as a Double
}
}
Run Code Online (Sandbox Code Playgroud)
如果创建类型对您来说太多了,那么您可以执行语句when并根据参数的类型处理参数,或许还可以对其进行规范化:
fun parseValue(value: Any?): Double? = when(value){
is Double -> value
is String -> value.toDoubleOrNull()
is Int -> value.toDouble()
else -> null
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3173 次 |
| 最近记录: |