On this page
Trait scala.reflect.Manifest
@nowarn("cat=deprecation&origin=scala\\.reflect\\.ClassManifest(DeprecatedApis.*)?") @implicitNotFound(msg = "No Manifest available for ${T}.")
A Manifest[T]
is an opaque descriptor for type T. Its supported use is to give access to the erasure of the type as a Class
instance, as is necessary for the creation of native Arrays
if the class is not known at compile time.
The type-relation operators <:<
and =:=
should be considered approximations only, as there are numerous aspects of type conformance which are not yet adequately represented in manifests.
Example usages:
def arr[T] = new Array[T](0) // does not compile
def arr[T](implicit m: Manifest[T]) = new Array[T](0) // compiles
def arr[T: Manifest] = new Array[T](0) // shorthand for the preceding
// Methods manifest and optManifest are in [[scala.Predef]].
def isApproxSubType[T: Manifest, U: Manifest] = manifest[T] <:< manifest[U]
isApproxSubType[List[String], List[AnyRef]] // true
isApproxSubType[List[String], List[Int]] // false
def methods[T: Manifest] = manifest[T].runtimeClass.getMethods
def retType[T: Manifest](name: String) =
methods[T] find (_.getName == name) map (_.getGenericReturnType)
retType[Map[_, _]]("values") // Some(scala.collection.Iterable<B>)
Supertypes | |
---|---|
Known subtypes |
Concrete methods
Source
Definition Classes | ClassManifestDeprecatedApis |
---|
Source
Definition Classes | ClassTag -> Equals -> ClassManifestDeprecatedApis |
---|
Source
Note: testing for erasure here is important, as it is many times faster than <:< and rules out most comparisons.
Source
Source
Definition Classes | ClassManifestDeprecatedApis |
---|
Inherited methods
Source
Inherited from | ClassManifestDeprecatedApis |
---|
Source
Inherited from | ClassManifestDeprecatedApis |
---|
Source
Produces a new array with element type T
and length len
Inherited from | ClassTag |
---|
Source
def runtimeClass: Class[_]
A class representing the type U
to which T
would be erased. Note that there is no subtyping relationship between T
and U
.
Inherited from | ClassTag |
---|
Source
Source
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 from | ClassTag |
---|
Source
Produces a ClassTag
that knows how to instantiate an Array[Array[T]]
Inherited from | ClassTag |
---|
© 2002-2022 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://scala-lang.org/api/3.1.1/scala/reflect/Manifest.html