在 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 次 |
最近记录: |