您的位置:首页 > 其它

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

2016-11-08 23:45 357 查看


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

前一篇在提到获取Class时的两个方法:classOf 和 getClass
scala> class  A
scala> val a = new A

scala> a.getClass
res2: Class[_ <: A] = class A

scala> 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;


转载自:http://hongjiang.info/scala/   推荐大家阅读下这位大哥出版的书《Scala函数式编程》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐