Scala类型检查与转换

论坛 期权论坛 脚本     
匿名技术用户   2021-1-4 19:52   11   0

Scala类型检查与转换

isInstanceOf:检查某个对象是否属于某个给定的类。
asInstanceOf:将引用转换为子类的引用。
classOf:如果想测试p指向的是一个Employee对象但又不是其子类,可以用if(p.getClas
s == classOf[Employee])
,classOf方法定义在scala.Predef对象中,因此会被自动引入。如:

if(p.isInstanceOf[Employee]){ 
  val s = p.asInstanceOf[Employee] 
}

与Java相比:

Scala

Java

obj.isInstanceOf[Class]

obj instanceof Class

obj.asInstanceOf[Class]

(Class)obj

classOf[Class]

Class.class


e.g

object ClassTest {
  def main(args: Array[String]){
    val testA: SuperClass = new SuperClass
    val testB: SuperClass = new SubClass
    val testC: SubClass = new SubClass
    
    println(testA.isInstanceOf[SuperClass])
    println(testB.isInstanceOf[SuperClass])
    println(testC.isInstanceOf[SubClass])
    
    println(testA.asInstanceOf[SuperClass])
    println(testB.asInstanceOf[SuperClass])
    println(testB.asInstanceOf[SubClass])
 
 if(testB.getClass() == classOf[SuperClass]){
     println("true")
    }
    else{
      println("false")
    }
  }
}

class SuperClass{
  
}

class SubClass extends SuperClass{
  
}

  

运行结果:

true
true
true
edu.firstday.SuperClass@11b5a415
edu.firstday.SubClass@2c2767c8
edu.firstday.SubClass@2c2767c8
false

  




版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/GatsbyNewton/p/4780617.html

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP