在Scala中,Unit、Nothing和Null是三个比较特殊的数据类型,三者之间的区别如下:
Unit
类似于Java中的void,表示没有返回值,用于不返回任何结果的方法的结果类型。
只有一个实例值,就是()。
Null
表示返回值为空,是任意AnyRef类型的子类型;
只有一个实例值,就是null。
Nothing
密封的抽象类,没有任何的实现的子类;主要作用是辅助类型的推导。
在实际的开发中,主要是在方法抛出异常的时候会采用Nothing作为返回值,这样有一个好处,就
是我们可以把返回的值(异常)赋给其它的函数或者变量(兼容性)。
object Scala13_TestNothingType {
def main(args: Array[String]): Unit = {
def test() : Nothing = {
throw new Exception()
}
test
}
}
Exception in thread "main" java.lang.Exception
at com.atguigu.bigdata.scala.sz.chapter02.BaseTest$.f2$1(BaseTest.scala:43)
at com.atguigu.bigdata.scala.sz.chapter02.BaseTest$.main(BaseTest.scala:46)
at com.atguigu.bigdata.scala.sz.chapter02.BaseTest.main(BaseTest.scala)
Nothing源码:
sealed abstract class Nothing$ extends Throwable
可以看出是一个密闭的抽象类。