今天来学习下type与class解析
让我们先来看看代码
import scala.reflect.runtime.universe._
class Spark
trait Hadoop
object Flink
class Java{
class scala
}
object Type_Advanced {
def main(args:Array[String]){
println(typeOf[Spark])
println(classOf[Spark])
val spark = new Spark
println(spark.getClass)
println(classOf[Hadoop])
println(typeOf[Hadoop])
println(Flink.getClass)//scala中object背后是有具体的类的
val java1 = new Java
val java2 = new Java
val scala1 = new java1.scala
val scala2 = new java2.scala
println(scala1.getClass)
println(scala2.getClass)
println(typeOf[java1.scala] == typeOf[java2.scala])
println(typeOf[java1.scala])
println(typeOf[java2.scala])
println(classOf[List[Int]] == classOf[List[String]])
println(typeOf[List[Int]] == typeOf[List[String]])
}
}
类和type比较,type比class更具体。任何数据都有type。但是class是一种数据结构,或数据 结构的抽象;而type更具体。
打印类的type就是包名加类名,但是class打印时在前面得加class
object的getClass是class 包名加类名加$。所以object是有具体的类的
object的classOf报错。
getClass是获得类的子类,
classOf是类型本身
分享下更多的scala资源吧:
百度云盘:http://pan.baidu.com/s/1gd7133t
微云云盘:http://share.weiyun.com/047efd6cc76d6c0cb21605cfaa88c416
360云盘: http://yunpan.cn/cQN9gvcKXe26M (提取码:13cd)
信息来源于 DT大数据梦工厂微信公众账号:DT_Spark
关注微信账号,获取更多关于scala学习内容