Scala中的Type与Class

来源:互联网 发布:英雄联盟mac版 编辑:程序博客网 时间:2024/06/04 19:27


示例代码:

//Type与Class实战详解/** * 类型系统与类 *  * 无论java还是scala都是基于jvm虚拟机 * java1.5以前一个具体对象的类型和他的class是一一对应的,后来由于引入了泛型。 * 例如数组,数组里面有可能是字符串也可能是整数类型等等, * 虚拟机本身并不关心泛型,或者类型系统,在虚拟机中泛型在编译和运行时是被擦除掉的。 * 在运行时是通过反射获取到的。 */import scala.reflect.runtime.universe._class Sparktrait Hadoopobject Flinkclass Java{  class Scala}object Type_Advanced {  def main(args: Array[String]): Unit = {    println(typeOf[Spark])  //com.dt.scala.bestpractice.Spark    println(classOf[Spark]) //Class[_<: Spark]  //class com.dt.scala.bestpractice.Spark    val spark = new Spark//    println(spark.getClass == classOf[Spark])    println(classOf[Hadoop]) //interface com.dt.scala.bestpractice.Hadoop    println(typeOf[Hadoop])  //com.dt.scala.bestpractice.Hadoop        println(Flink.getClass)  //class com.dt.scala.bestpractice.Flink$   object背后是有具体的类的//    println(classOf[Flink])//报错,没有找到Flink这个类    //classOf与getClass的区别:getClass其实获得的是当前类的子类, 直接classOf就是当前的类型            val java1 = new Java    val java2 = new Java    val scala1 = new java1.Scala    val scala2 = new java2.Scala    println(scala1.getClass)  //class com.dt.scala.bestpractice.Java$Scala    println(scala2.getClass)  //class com.dt.scala.bestpractice.Java$Scala    println(typeOf[java1.Scala] == typeOf[java2.Scala])  //false    println(typeOf[java1.Scala])  //java1.Scala  }}






0 0
原创粉丝点击