首页 > 解决方案 > BigInteger 作为 kotlin.Number

问题描述

在 Kotlin 中,BigInteger来自包 java.math。那么我怎么能做到这一点:

val x: Number = BigInteger.ONE

在上面的陈述中,Numberiskotlin.Number和我看不到 that 和 之间有任何关系java.math.BigInteger

相反,为什么以下是编译时错误?

val x: java.lang.Number = BigInteger.ONE

标签: kotlinbiginteger

解决方案


正如Java interop 上的 Kotlin 文档所述:

Kotlin 专门处理一些 Java 类型。此类类型不是“按原样”从 Java 加载的,而是映射到相应的 Kotlin 类型。映射仅在编译时很重要,运行时表示保持不变。

java.lang.Number类根本不应该在 Kotlin 中使用(与所有其他映射类型一样)。应该使用它的映射类型(kotlin.Number在这种情况下)


推荐阅读