博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
scala:类型转换
阅读量:7277 次
发布时间:2019-06-29

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

测定某个对象是否属于给定的类,用isInstanceOf方法,如果测试成功,可以用asInstanceOf方法转换。

if(o.isInstanceOf[T]){
val t: T = o.asInstanceOf[T] //若o为T的子类对象,则此句结束后o还是T的子类对象}

如果o为nullo.isInstanceOf[T]将返回falseo.asInstanceOf[T]将返回null

如果要测试o指向的是一个T对象,但不是T对象的子类对象,上面方法无效,可以用:

if(o.getClass == classOf[T]){
}

getClass方法返回的是java.lang.Class对象,classOf方法返回的也是同样的对象(classOf定义在scala.Predef对象中,所以会自动引入)。

此处Class类的==方法定义在AnyRef类中,在Scala API文档中的解释为:
x == that首先判断x是否为空,如果x为空然后判断that是否为空(都为null返回true),如果x不为空那么调用x.equals(that)来判断是否相等。这里之所以会返回true是因为每一个表示Java类的Class类的实例对象只有一个。

转载于:https://www.cnblogs.com/xuejianbest/p/10285092.html

你可能感兴趣的文章
百度地图手机端单触点单击和长按事件,解决部分手机(小米手机)地图单击事件失效,多触点、拖动依然触发长按的bug...
查看>>
lua------------------Unity3D研究院编辑器之打开unity不可识别的文件(十三)
查看>>
【转】windows 控制台cmd乱码的解决办法
查看>>
JavaWEB开发一些小的思想与功能小记
查看>>
wmiprvse.exe cpu占用高怎么解决
查看>>
一张图讲清楚TCP流量控制
查看>>
GC日志分析
查看>>
java线程同步方法,方法块差别
查看>>
【Java知识点专项练习】之 接口和抽象类的区别
查看>>
Docker 常用命令
查看>>
linux添加新磁盘和创建分区
查看>>
Nginx配置文件(nginx.conf)配置具体解释
查看>>
Android中如何在代码中设置View的宽和高?
查看>>
vue class绑定 组件
查看>>
LinkedBlockingQueue中put源码分析
查看>>
最小生成树
查看>>
vs2017 js cordova + dotnet core 开发app
查看>>
基于Microsoft Graph打造自己的Timeline应用
查看>>
基础才是重中之重~lock和monitor的区别
查看>>
项目微管理21 - 互联
查看>>