Scala :不键入用户定义的任何内容 类

Scala : Type Nothing with User defined classes

在 scala 中 Nothing 是所有其他类型的子类型。

scala> class A {}
defined class A

scala> def x[T >: Nothing](t: T): Unit = {}
x: [T](t: T)Unit

scala> x(new A)

当我们创建任意 class 时,它会自动成为 Nothing

的超类型
  1. 这个 属性 在 scala 中是如何维护的?编译器是否使 Nothing 在编译时每隔 class 扩展一次?
  2. 像这样,是否可以将自定义 class X 定义为一组 classes 的子类型(比如 set s) 而不使 Xs 中的所有 class 扩展? (例如:Class X 是包 com.myproject.models 中所有 classes 的子类型)

请分享您的想法。

How this property is maintained in scala? Does the compiler makes Nothing extend every other class at compile time?

Nothing 不是用实际的 class 实现的,它是编译器的纯产物。 Nothing 类型的实际处理可以在编译器内部的几个地方被粗化为硬编码 Nothing,例如,当 t1 == Nothing.[=17= 时,isSubType(t1: Type, t2: Type): Boolean 无条件为真]

Like this way, is it possible to define a custom class X as a subtype of a set of classes(say set s) without making X extend from all the classes in the s?

没有