当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Scala reflect.ClassTag用法及代码示例


@nowarn ("cat=deprecation&origin;=scala\\.reflect\\.ClassManifestDeprecatedApis") @implicitNotFound (msg = "No ClassTag 可用于 ${T}")

用法 一

trait ClassTag[T] extends ClassManifestDeprecatedApis[T] with Equals with Serializable

ClassTag[T] 存储给定类型的已擦除类 T ,可通过 runtimeClass 字段访问.这对于实例化编译时元素类型未知的 Array 特别有用。

ClassTags 是一个较弱的特例scala.reflect.api.TypeTags.TypeTags,因为它们只包装给定类型的运行时类,而TypeTag包含所有静态类型信息。那是,ClassTags 是由只知道一个类型的顶级类构成的,而不必知道它的所有参数类型。这个运行时信息对于运行时来说已经足够了Array创建。

例如:

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)

scala> mkArray("Japan","Brazil","Germany")
res1: Array[String] = Array(Japan, Brazil, Germany)

参看scala.reflect.api.TypeTags更多示例,或反射指南:TypeTags更多细节。

伴生:

object

源码:

ClassTag.scala

用法 二

object ClassTag

类标签对应于基本类型和 ClassTags 的构造函数/提取器。

伴生:

class

源码:

ClassTag.scala

相关用法


注:本文由纯净天空筛选整理自scala-lang.org大神的英文原创作品 reflect.ClassTag。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。