ClassTag、Manifest
来源:互联网 发布:改号软件 编辑:程序博客网 时间:2024/06/03 06:55
》Manifest
Manifest是scala2.8引入的一个特质,用于编译器在运行时也能获取泛型类型的信息。
在JVM上,泛型参数类型T在运行时是被“擦拭”掉的,编译器把T当作Object来对待,
所以T的具体信息是无法得到的;为了使得在运行时得到T的信息,
scala需要额外通过Manifest来存储T的信息,并作为参数用在方法的运行时上下文。
》ClassTag
源码中的解释,在泛型中,type T是被擦除的。这个是非常有用的(??具体还要去追究下有什么用),在我们构建数组的时候,但是数组的类型我们也不知道,编译的时候不知道,但是运行的时候要知道,ClassTag只包含实际运行时的类的类型。
ClassTag会帮我们存储T的信息,如下面,根据类型推导可以指定T是Int类型,这时候ClassTag就可以把Int类型这个信息传递给编译器。ClassTag运行时指定在编译的时候无法指定的类型信息。
scala > def mkArray[T : ClassTag](elems: T*) = Array[T](elems: _*)mkArray: [T](elems: T*)(implicit evidence$1: scala.reflect.ClassTag[T])Array[T]scala> mkArray(42,13)res0: Array[Int] = Array(42,13)
阅读全文
0 0
- ClassTag、Manifest
- ClassTag 、Manifest、ClassManifest、TypeTag代码实战
- Scala中Manifest、ClassTag、TypeTag的学习
- scala Manifest、ClassTag、TypeTag的学习
- scala进阶5-classtag、typetag、manifest、classmanifest
- ClassTag
- Scala关于ClassTag 、Manifest、ClassManifest、TypeTag的使用
- Scala中ClassTag 、Manifest、ClassManifest、TypeTag的关系
- scala-46: ClassTag 、Manifest、ClassManifest、TypeTag代码实战及其在Spark中的应用源码解析
- Scala 深入浅出实战经典 第46讲: ClassTag 、Manifest、ClasMainifest TagType实战
- 46.ClassTag 、Manifest、ClassManifest、TypeTag代码实战及其在Spark中的应用源码解析
- 第46讲:ClassTag 、Manifest、ClassManifest、TypeTag代码实战及其在Spark中的应用源码解析学习笔记
- Scala深入浅出进阶经典 第46讲: ClassTag 、Manifest、ClassManifest、TypeTag代码实战及其在Spark中的应用源码解析
- Scala的ClassTag
- manifest
- Manifest
- *.manifest
- <manifest>
- 在VMware虚拟机中安装linux
- Spring技术概述
- 百度等登录RSA加密密码Java版本
- 对于java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I错误解决
- Python学习笔记:六
- ClassTag、Manifest
- python2转化成python3脚本
- GSON你应该知道的事
- python编程 从入门到实践第七章 输入与while循环
- matlb加载图像库运行实验
- android jni
- UIButton小技巧----点击事件时间间隔
- [教你警告消除]Warning[Pe1072]: a declaration cannot have a label!
- Git push报错,提示没有权限.