Any
Any是abstract类,它是Scala类继承结构中最底层的。所有运行环境中的Scala类都是直接或间接继承自Any这个类,它就是其它语言(.Net,Java等)中的Object。
从Scala2.10 开始,对于一般性的traits(特性,特质)可以直接继承Any。一般性traits是指,继承自Any,并且只有defs成员,不需要初始化。
可以参考:http://www.scala-lang.org/api/current/scala/Any.html
最主要的一个用途就是为一些值类型提供简单的方法继承
trait Printable extends Any {
def print(): Unit = println(this)
}
class Wrapper(val underlying: Int) extends AnyVal with Printable
val w = new Wrapper(3)
w.print()
wrapper继承自AnyVal,AnyVal是值类型,并且扩展了traits,所以它就具有了Printable 的print方法
方法名 | 说明 |
---|---|
getClass(): Class[_] | 返回运行时类的对象 |
final def !=(arg0: Any): Boolean | 判断两个对象不同 |
final def ##(): Int | 对于除了null对象和被装箱的数值外,结果同hashCode |
final def ==(arg0: Any): Boolean | 判断两个对象是相同 |
final def asInstanceOf[T0]: T0 | 将传入的对象转为T0类型对象 |
def equals(arg0: Any): Boolean | 比较对象是否相等 |
def hashCode(): Int | 计算哈希值 |
final def isInstanceOf[T0]: Boolean | 检查动态传入的对象是否是T0类型 |
def toString(): String |
AnyRef
是所有引用类型的基类。除了值类型,所有类型都继承自AnyRef 。
参考:http://www.scala-lang.org/api/current/scala/AnyRef.html
除上面表格提供的方法外,还提供如下方法:
final def eq(arg0: AnyRef): Boolean
final def ne(arg0: AnyRef): Boolean
final def notify(): Unit
final def notifyAll(): Unit
final def synchronized[T0](arg0: ⇒ T0): T0
final def wait(): Unit
final def wait(arg0: Long, arg1: Int): Unit
final def wait(arg0: Long): Unit
AnyVal
AnyVal 所有值类型的基类, 它描述的是值,而不是代表一个对象。
它包括 9 个 AnyVal 子类型:
Scala.Double
scala.Float
scala.Long
scala.Int
scala.Char
scala.Short
scala.Byte
上面是数字类型。
scala.Unit 和 scala.Boolean 是非数字类型。
Scala 2.10 之前, AnyVal 是一个密封的 trait,不能被继承。 从 Scala 2.10开始,我们可以自定义一个从 AnyVal继承下来的类型。
对于这些基本类型的描述,和我们其它语言是相通的,具体可以参考
http://www.scala-lang.org/api/current/scala/AnyVal.html