Kotlin:单一财产与多个不同types的制定者

我试图建立一个具有LocalDatetypes属性的类,它具有接受不同types的setter: LocalDateString 。 在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) } } } 

它不编译。 我该如何解决这个问题?

过了一段时间,我回到了重载setter的问题,并开发了以下解决方案:

 class A(_date: LocalDate) { var date: Any = _date set(value) { field = helperSet(value) } get() = field as LocalDate private fun  helperSet(t: T) = when (t) { is LocalDate -> t is String -> LocalDate.parse(t) else -> throw IllegalArgumentException() } } 

所以如果你只是想构造它(通过constructor ),只需创建一个辅助构造函数

 SomeExampleClass(LocalDate.MAX) SomeExampleClass("2007-12-03") class SomeExampleClass(var _date: LocalDate) { constructor(_date: String) : this(LocalDate.parse(_date)) }