scala:类型转换

Scala类型检查与转换
本文详细介绍了Scala中如何使用isInstanceOf方法检查对象是否属于特定类,以及如何利用asInstanceOf进行类型转换。同时,针对非直接子类的情况,提供了通过比较Class对象的解决方案。

测定某个对象是否属于给定的类,用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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值