我正在尝试构建一个具有LocalDate类型属性的类,该类具有接受不同类型的setter:LocalDate或String.如果是LocalDate,则直接分配值,如果是String,则对其进行解析然后分配.在Java中,我只需要实现两个重载的setter来处理上述两种情况.但我不知道如何处理Kotlin.我试过这个:
class SomeExampleClass(var _date: LocalDate) {
var date = _date
set(value) {
when(value) {
is LocalDate -> value
is String -> LocalDate.parse(value)
}
}
}
Run Code Online (Sandbox Code Playgroud)
它不编译.我该如何解决这个问题?
一段时间后,我回到了二传手的问题,并制定了以下解决方案:
class A(_date: LocalDate) {
var date: Any = _date
set(value) {
field = helperSet(value)
}
get() = field as LocalDate
private fun <T> helperSet(t: T) = when (t) {
is LocalDate -> t
is String -> LocalDate.parse(t)
else -> throw IllegalArgumentException()
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1865 次 |
| 最近记录: |