Scala 基础-Any和基类(第二章)

Any

Any 类是所有类的超类,是 abstract 类,它有如下方法:!=(), ==(), equals(), hashCode(), toString(), asInstanceOf(), isInstanceOf(),其有两个子类:

  • AnyVal : 是 abstract 类,对于直接类型的 scala 封装类,如 Int、Double 等,其是它们的基类
  • AnyRef : 是 trai,对于引用类型,其是它们的基类,包含了 java 的 Object 类的一些方法,比如 notify(), wait(), finalize(),可以直接当做 java 的 Object 来使用

Nothing

Nothing 是所有类的子类,是一个类,其没有对象,但是可以用来定义类型。作用主要有:
- 一个空的collection
- 用于标记不正常的停止或者中断

1
2
3
4
scala> val l:List[Int] = List[Nothing]()
l: List[Int] = List()
scala> def foo = throw new RuntimeException
foo: Nothing

Null

Null 是所有 AnyRef 的子类,是所有继承了 Object 的类的子类,所以 Null 可以赋值给所有的引用类型(AnyRef),不能赋值给值类型。null是其唯一的对象。

1
2
3
4
val x = null            // x: Null
val y: String = null // y: String = null
val z: Int = null // error: type mismatch
val u: Unit = null // u: Unit = ()

Nil

Nil 是一个空的 List,定义为 List[Nothing],根据 List 的定义 List[+A],所有 Nil 是所有 List[T] 的子类。

scala_any