我正在尝试创建一个扩展作为属性,我也尝试了一个扩展函数,下面是BigDecimal
的示例:
val BigDecimal.HUNDRED: BigDecimal
get() = TEN.multiply(TEN)
fun BigDecimal.HUNDRED_ONE(): BigDecimal {
return TEN.multiply(TEN)
}
Kotlin似乎既不认识HUNDRED
也不认识HUNDRED_ONE()
。我使用的是Kotlin版本1.5.21
。
我在Kotlin版本1.5.21
上做错了什么吗?
我以前在列表中使用过这个功能。例如:
fun <T> toList(list: List<T>?): List<T> {
return list ?: listOf()
}
我假设您想这样使用它:
val value = BigDecimal.HUNDRED
据我所知,这在Kotlin目前是不可能的。扩展在实例上工作,所以它们更像是实例成员,而不是静态成员。使用上面的代码,这将工作:BigDecimal(0).HUNDRED
.
我相信只有一种情况是可以提供"静态"的。扩展。如果一个类有一个同伴(所以它是Kotlin类),那么我们可以向这个同伴添加扩展。但这并不适用于BigDecimal
或任何其他Java类。