0

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

1.5.21我在无法正常工作的 Kotlin 版本上做错了什么吗?

我之前已经将这个功能用于列表。例如:

fun <T> toList(list: List<T>?): List<T> {
    return list ?: listOf()
}
4

1 回答 1

2

我假设您想像这样使用它:

val value = BigDecimal.HUNDRED

据我所知,目前在 Kotlin 中这是不可能的。扩展适用于实例,因此它们更像是实例成员,而不是静态成员。使用上面的代码,这将起作用:BigDecimal(0).HUNDRED.

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

于 2021-10-18T23:19:53.503 回答