我尝试并失败(或部分成功)来实现LocalDateTime
这是我的尝试:
fun LocalDateTime.isNotBefore(other: ChronoLocalDateTime<*>) = !isBefore(other)
问题是IntelliJ抱怨它无法智能地展示我的curTime
变量(val
和LocalDateTime?
)
isNotBefore(curTime)
会有一条红色的波浪形线,并抱怨它无法智能播放。所以我必须使用!!
不同之处在于LocalDateTime
这样的常规isBefore()
方法不需要此广告中的智能广播。
所以这意味着我没有在我的扩展功能中正确实现一些东西。
有谁知道如何修复扩展功能,以便我不需要使用!!
?
答案 0 :(得分:3)
如果仔细查看isBefore
签名,则需要ChronoLocalDateTime<*>!
类型。这是Platform Type的kotlin表示法。感叹号表示它需要ChronoLocalDateTime<*>
或ChronoLocalDateTime<*>?
,而您的isNotBefore
方法需要非可空类型。
如果您将扩展功能更改为可接受为空,则它将以相同的方式工作。
fun LocalDateTime.isNotBefore(other: ChronoLocalDateTime<*>?) = !isBefore(other)