为什么我不能在Kotlin中创建BigDecimal扩展?



我正在尝试创建一个扩展作为属性,我也尝试了一个扩展函数,下面是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类。

相关内容

  • 没有找到相关文章

最新更新