scala学习之Type 与 class

来源:互联网 发布:java反序列化漏洞工具 编辑:程序博客网 时间:2024/06/09 18:19
虚拟机中泛型在编译和运行时被擦除掉的。在运行时是通过反射来得到的。但是scala不同。 scala.reflect.runtime.universe._ type 类和type比较,type比class更具体。任何数据都有type。但是class是一种数据结构,或数据 结构的抽象。 更宏观。但type更具体。 打印类的type就是包名加类名,但是class打印时在前面得加class。 object的getClass是class 包名加类名加$,所以object是有具体的类。 object的classOf会报错。 getClass是val java1=new Java val java2=new Java val scala1=new java1.Scala val scala2=new java2.Scala println(scala1.getClass)//class 包名 类名 println(scala2.getClass)//class 包名类名 println(typeOf[java1.Scala]==typeOf[java2.Scala])//false println(typeOf[java1.Scala])//java1.Scala println(tpyeOf[java2.Scala])//java2.Scala println(classOf[List[Int]]==classOf[List[String]])//true println(typeOf[List[Int]]==typeOf[List[String]])//false type显示的是更具体到对象的类型,而class只是类类型获得类的子类, classOf是类型本身。 trait的为interface。
     示例代码:
          class Hadoop
trait Spark
object Flink
class Java{
  class Scala
}
object TestObject {
  def main(args: Array[String]): Unit = {
    println(classOf[Hadoop])  
    val hadoop = new Hadoop
    println(hadoop.getClass)
    println(Flink.getClass)
  
  }

}

以上内容是从王家林老师DT大数据课程第78讲的学习笔记。
DT大数据微信公众账号:DT_Spark  
王家林老师QQ:1740415547 
王家林老师微信号:18610086859
百度云盘地址:http://pan.baidu.com/s/1ntmr88L
优酷播放地址:http://v.youku.com/v_show/id_XMTMwMjMwNzQyOA==.html
51cto的播放地址:http://edu.51cto.com/lesson/id-70920.html

0 0
原创粉丝点击