Scala:在用户定义的类中不输入任何内容
问题描述:
在scala中Nothing
是每个其他类型的子类型。Scala:在用户定义的类中不输入任何内容
scala> class A {}
defined class A
scala> def x[T >: Nothing](t: T): Unit = {}
x: [T](t: T)Unit
scala> x(new A)
当我们创建一个任意类,它会自动成为Nothing
- 一个超这个属性是如何保持在Scala呢?编译器在编译时是否使
Nothing
扩展了其他每个类? - 像这样,才有可能定义一个自定义类
X
作为一组类的子类(比如设置小号)未做X
从所有类的小号延长? (例如:X
类是包com.myproject.models
中的所有类别的子类型)
请分享您的想法。
答
该属性是如何维护在scala中的?在编译时,编译器是否使任何其他类都不会扩展?
Nothing
没有用实际的类实现,它是编译器的纯粹的人工产物。 Nothing
类型的实际处理在编译器内部的几个地方可以被庸俗化为硬编码Nothing
,例如,isSubType(t1: Type, t2: Type): Boolean
在t1 == Nothing
时是无条件的。
像这样,是否可以定义一个自定义类X作为一组类的子类型(比如说set s),而不用让X从s中的所有类延伸?
号
+0
@OlivierBlanvillain感谢你的回答。 –
见https://softwareengineering.stackexchange.com/questions/195793/how-is-nothing-a-subtype-of-every-other-type-in-scala –