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

Why cannot I create extension to BigDecimal in Kotlin?

我正在尝试将扩展创建为 属性,并且我还尝试了扩展功能,下面是 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.

我相信只有一种情况可以提供“静态”扩展。如果 class 有一个同伴(所以它是 Kotlin class)那么我们可以为这个同伴添加扩展。但这根本不适用于 BigDecimal 或任何其他 Java class.