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