博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Scala:Any, AnyRef, AnyVal
阅读量:5765 次
发布时间:2019-06-18

本文共 1403 字,大约阅读时间需要 4 分钟。

hot3.png

Any

Any是abstract类,它是类继承结构中最底层的。所有运行环境中的Scala类都是直接或间接继承自Any这个类,它就是其它语言(.Net,等)中的Object。

从Scala2.10 开始,对于一般性的traits(特性,特质)可以直接继承Any。一般性traits是指,继承自Any,并且只有defs成员,不需要初始化。

可以参考:

最主要的一个用途就是为一些值类型提供简单的方法继承

trait Printable extends Any {  def print(): Unit = println(this)}class Wrapper(val underlying: Int) extends AnyVal with Printableval 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 。

参考:

除上面表格提供的方法外,还提供如下方法:

final def eq(arg0: ): 

final def ne(arg0: ): 

final def notify(): 

final def notifyAll(): 

final def synchronized[T0](arg0: ⇒ T0): T0

final def wait(): 

final def wait(arg0: , arg1: ): 

final def wait(arg0: ): 

AnyVal

AnyVal 所有值类型的基类, 它描述的是值,而不是代表一个对象。 

它包括 9 个 AnyVal 子类型:

.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继承下来的类型。

对于这些基本类型的描述,和我们其它语言是相通的,具体可以参考

 

转载于:https://my.oschina.net/cloudcoder/blog/856334

你可能感兴趣的文章
【Canal源码分析】Canal Server的启动和停止过程
查看>>
机房带宽暴涨问题分析及解决方法
查看>>
XP 安装ORACLE
查看>>
八、 vSphere 6.7 U1(八):分布式交换机配置(vMotion迁移网段)
查看>>
[转载] 中华典故故事(孙刚)——19 万岁
查看>>
Maven学习总结(十)——使用Maven编译项目gbk的不可映射问题
查看>>
php5编译安装常见错误和解决办法集锦
查看>>
Linux远程访问及控制
查看>>
MongoDB实战系列之五:mongodb的分片配置
查看>>
Unable to determine local host from URL REPOSITORY_URL=http://
查看>>
ORACLE配置,修改tnsnames.ora文件实例
查看>>
Workstation服务无法启动导致无法访问文件服务器
查看>>
ant中文教程
查看>>
Linux常用命令(一)
查看>>
【VMCloud云平台】SCAP(四)租户(一)
查看>>
基于 Android NDK 的学习之旅----- C调用Java
查看>>
Windows 10 技术预览
查看>>
Tomcat http跳转https
查看>>
一个自动布署.net网站的bat批处理实例
查看>>
我的友情链接
查看>>