【发布时间】:2023-03-17 01:55:02
【问题描述】:
我想跳入 Any 的源代码,看看一些方法是如何实现的,但我发现它不包含在 scala-library-src 中,AnyRef 也不包含(然而,值类型和 Nothing 是)。我很好奇,Scala 对象基类型是如何以及在哪里实现的?
【问题讨论】:
标签: scala
我想跳入 Any 的源代码,看看一些方法是如何实现的,但我发现它不包含在 scala-library-src 中,AnyRef 也不包含(然而,值类型和 Nothing 是)。我很好奇,Scala 对象基类型是如何以及在哪里实现的?
【问题讨论】:
标签: scala
/src/library-aux/scala/Any.scala 和 /src/library-aux/scala/AnyRef.scala 包含 trait Any 和 trait AnyRef。
【讨论】:
AnyRef 或 Any 这样的类。在 jvm 上,简短的故事是 AnyRef 映射到 java.lang.Object,AnyVal 没有单个映射(映射到原始类型之一 - 例如 int - 或其盒装版本 - 例如 @ 987654331@ 取决于上下文。AnyRef = AnyVal | AnyRef,因此也没有单一的直接映射。过度简化,但希望你明白。