A ClassTag[T]
stores the erased class of a given type T
, accessible via the runtimeClass
field.
A ClassTag[T]
stores the erased class of a given type T
, accessible via the runtimeClass
field. This is particularly useful for instantiating Array
s whose element types are unknown
at compile time.
ClassTag
s are a weaker special case of scala.reflect.api.TypeTags.TypeTags, in that they
wrap only the runtime class of a given type, whereas a TypeTag
contains all static type
information. That is, ClassTag
s are constructed from knowing only the top-level class of a
type, without necessarily knowing all of its argument types. This runtime information is enough
for runtime Array
creation.
For example:
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)
See scala.reflect.api.TypeTags for more examples, or the Reflection Guide: TypeTags for more details.
- Companion
- object
Value members
Abstract methods
Concrete methods
Produces a new array with element type T
and length len
Produces a new array with element type T
and length len
A ClassTag[T] can serve as an extractor that matches only objects of type T.
A ClassTag[T] can serve as an extractor that matches only objects of type T.
The compiler tries to turn unchecked type tests in pattern matches into checked ones
by wrapping a (_: T)
type pattern as ct(_: T)
, where ct
is the ClassTag[T]
instance.
Type tests necessary before calling other extractors are treated similarly.
SomeExtractor(...)
is turned into ct(SomeExtractor(...))
if T
in SomeExtractor.unapply(x: T)
is uncheckable, but we have an instance of ClassTag[T]
.
Inherited methods
Deprecated and Inherited methods
Tests whether the type represented by this manifest is a subtype
of the type represented by that
manifest, subject to the limitations
described in the header.
Tests whether the type represented by this manifest is a subtype
of the type represented by that
manifest, subject to the limitations
described in the header.
- Deprecated
- Inherited from
- ClassManifestDeprecatedApis
Tests whether the type represented by this manifest is a supertype
of the type represented by that
manifest, subject to the limitations
described in the header.
Tests whether the type represented by this manifest is a supertype
of the type represented by that
manifest, subject to the limitations
described in the header.
- Deprecated
- Inherited from
- ClassManifestDeprecatedApis
- Deprecated
- Inherited from
- ClassManifestDeprecatedApis
- Deprecated
- Inherited from
- ClassManifestDeprecatedApis
- Deprecated
- Inherited from
- ClassManifestDeprecatedApis
- Deprecated
- Inherited from
- ClassManifestDeprecatedApis
- Deprecated
- Inherited from
- ClassManifestDeprecatedApis
- Deprecated
- Inherited from
- ClassManifestDeprecatedApis
- Deprecated
- Inherited from
- ClassManifestDeprecatedApis
- Deprecated
- Inherited from
- ClassManifestDeprecatedApis