classOf与getClass方法的差异

来源:互联网 发布:excel画出数据形状 编辑:程序博客网 时间:2024/05/19 20:21

scala类型系统:2) classOf与getClass方法的差异


转载地址: http://hongjiang.info/scala-type-system-classof-and-getclass/

前一篇在提到获取Class时的两个方法:classOf 和 getClass

scala> class  Ascala> val a = new Ascala> a.getClassres2: Class[_ <: A] = class Ascala> classOf[A]res3: Class[A] = class A

上面显示了两者的不同,getClass 方法得到的是 Class[A]的某个子类,而 classOf[A] 得到是正确的 Class[A],但是去比较的话,这两个类型是equals为true的

scala> a.getClass  == classOf[A]res13: Boolean = true

这种细微的差别,体现在类型赋值时,因为java里的 Class[T]是不支持协变的,所以无法把一个 Class[_ < : A] 赋值给一个 Class[A]

scala> val c:Class[A] = a.getClass<console>:9: error: type mismatch;
原创粉丝点击