在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)
当我们创建一个任意类时,它会自动成为Nothing
Nothing
在编译时扩展每个其他类?X
定义为一组类的子类型(比如set s ),而无需从所有类扩展X
s 中的课程? (例如:类X
是包com.myproject.models
)请分享您的想法。
答案 0 :(得分:6)
如何在scala中维护此属性?编译器是否在编译时使Nothing扩展每个其他类?
Nothing
没有用实际的类实现,它是编译器的纯工件。 Nothing
类型的实际处理可以在编译器内的几个地方被粗俗化为硬编码Nothing
,例如,isSubType(t1: Type, t2: Type): Boolean
时t1 == Nothing
无条件地为真。
就像这样,是否可以将自定义类X定义为一组类的子类型(比如set s),而不是从s中的所有类扩展X?
没有