Kotlin重新定义了许多已在Java中定义的原始常量,例如Long.MAX_VALUE
或Double.NaN
。
在Kotlin中进行编码时,它们之间有什么区别?
要明确的是,我提到了,例如:
kotlin.Long.Companion.MAX_VALUE
java.lang.Long.MAX_VALUE
答案 0 :(得分:2)
这是一个普遍的现象:Kotlin标准库的很大一部分基本上与Java相同。这是
Kotlin可以提供更精确的类型:可空和非可空或List
vs MutableList
;
可以从Kotlin-JS或Kotlin-Native或其他未来的Kotlin实现访问该库的这一部分。
出于这两个原因,请坚持使用Kotlin标准库类型和方法,除非您特别需要使用Java。
Long
(和Int
等)甚至是一种特殊情况,因为它们对应于多种Java类型:在某些上下文中它们最终成为原语({{1其他人作为盒装版本(long
)。你大多不关心Kotlin的这种差异,所以有更好的理由继续使用java.lang.Long
。
答案 1 :(得分:1)
Kotlin Long
类(以及Java中对应的所有其他类)都是包装器,它取决于类型是否为可空或不在int
内部(在JVM上)表示值(原始的,不可空的)或Integer
(对象,可空)。
看看here:
表示64位有符号整数 在JVM上,此类型的非可空值表示为基本类型
long
的值。
Kotlin和Java版MAX_VALUE
都是9223372036854775807L
,但由于kotlin.Long
是一个包装器,它的实现可以改变,可能会改变MAX_VALUE
,所以它最好坚持kotlin.Long.Companion.MAX_VALUE
。