我写的这行代码似乎是错误的,但实际上可以编译:
class A extends {}
A 从哪个类扩展?
实际上extends {}
总是被脱糖到 AnyRef 构造中,它是java.lang.Object
. 例如,在结构类型中,您可以编写:
def test[A <: {def some: String}](a: A) = a
这{def some: String}
是AnyRef
with的子类型some
:
test: [A <: AnyRef{def some: String}](a: A)A
A 扩展自 java.lang.Object。您可以在 scala 解释器中尝试以下代码:
class A extends {}
val a = classOf[A].getSuperclass
输出是:
a: Class[_ >: A] = class java.lang.Object