Annotation scala.reflect.api.Types.Type

abstract  type Type >: Null <: Universe.TypeApi


The type of Scala types, and also Scala type signatures. (No difference is internally made between the two).

Source
Types.scala
Linear Supertypes

Universe.TypeApi, AnyRef, Any

Known Subclasses
AnnotatedType, BoundedWildcardType, ClassInfoType, CompoundType, ConstantType, ExistentialType, MethodType, NullaryMethodType, PolyType, RefinedType, SingleType, SingletonType, SuperType, ThisType, TypeBounds, TypeRef




Abstract Value Members

abstract  def <:<(that: Universe.Type): Boolean


Does this type conform to given type argument that?

Definition Classes
TypeApi



abstract  def =:=(that: Universe.Type): Boolean


Is this type equivalent to given type argument that?

Definition Classes
TypeApi



abstract  def asSeenFrom(pre: Universe.Type, clazz: Universe.Symbol): Universe.Type



This type as seen from prefix pre and class clazz. This means: Replace all ThisTypes of clazz or one of its subclasses by pre and instantiate all parameters by arguments of pre. Proceed analogously for ThisTypes referring to outer classes.
 Example:
scala> import scala.reflect.runtime.universe._
import scala.reflect.runtime.universe._

scala> class D[T] { def m: T = ??? }
defined class D

scala> class C extends D[Int]
defined class C

scala> val D = typeOf[D[_]].typeSymbol.asClass
D: reflect.runtime.universe.ClassSymbol = class D

scala> val C = typeOf[C].typeSymbol.asClass
C: reflect.runtime.universe.ClassSymbol = class C

scala> val T = D.typeParams(0).asType.toType
T: reflect.runtime.universe.Type = T

scala> T.asSeenFrom(ThisType(C), D)
res0: reflect.runtime.universe.Type = scala.Int


Definition Classes
TypeApi



abstract  def baseClasses: List[Universe.Symbol]


The list of all base classes of this type (including its own typeSymbol) in linearization order, starting with the class itself and ending in class Any. 

Definition Classes
TypeApi



abstract  def baseType(clazz: Universe.Symbol): Universe.Type



The least type instance of given class which is a super-type of this type. Example:
class D[T]
class C extends p.D[Int]
ThisType(C).baseType(D) = p.D[Int]


Definition Classes
TypeApi



abstract  def companion: Universe.Type


Type signature of the companion of the underlying class symbol. NoType if the underlying symbol is not a class symbol, or if it doesn't have a companion. 

Definition Classes
TypeApi



abstract  def contains(sym: Universe.Symbol): Boolean


Does this type contain a reference to given symbol?

Definition Classes
TypeApi



abstract  def dealias: Universe.Type


Expands type aliases arising from type members. Note that type aliases can hide beneath singleton types and singleton types can hide inside type aliases. Moreover, aliases might lurk in the upper bounds of abstract types. Therefore careful thought has to be applied to identify and carry out unwrapping logic specific to your use case. 

Definition Classes
TypeApi



abstract  def decl(name: Universe.Name): Universe.Symbol


The defined or declared members with name name in this type; an OverloadedSymbol if several exist, NoSymbol if none exist. Alternatives of overloaded symbol appear in the order they are declared. 

Definition Classes
TypeApi



abstract  def decls: Universe.MemberScope



A Scope containing directly declared members of this type. Unlike members this method doesn't returns inherited members.
 Members in the returned scope might appear in arbitrary order. Use declarations.sorted to get an ordered list of members. 


Definition Classes
TypeApi



abstract  def erasure: Universe.Type


The erased type corresponding to this type after all transformations from Scala to Java have been performed. 

Definition Classes
TypeApi



abstract  def etaExpand: Universe.Type



Converts higher-kinded TypeRefs to PolyTypes. Functions on types are also implemented as PolyTypes.
 Example: (in the below, <List> is the type constructor of List) TypeRef(pre, <List>, List()) is replaced by PolyType(X, TypeRef(pre, <List>, List(X))) 


Definition Classes
TypeApi



abstract  def exists(p: (Universe.Type) => Boolean): Boolean


Is there part of this type which satisfies predicate p?

Definition Classes
TypeApi



abstract  def finalResultType: Universe.Type



For a curried/nullary method or poly type its non-method result type, the type itself for all other types.
scala> class C {
     | def foo[T](x: T)(y: T) = ???
     | def bar: Int = ???
     | }
defined class C

scala> typeOf[C].member(TermName("foo")).asMethod
res0: reflect.runtime.universe.MethodSymbol = method foo

scala> res0.info // PolyType wrapping a MethodType
res1: reflect.runtime.universe.Type = [T](x: T)(y: T)scala.Nothing

scala> res1.resultType // MethodType wrapping a MethodType
res2: reflect.runtime.universe.Type = (x: T)(y: T)scala.Nothing

scala> res1.resultType.resultType // vanilla MethodType
res3: reflect.runtime.universe.Type = (y: T)scala.Nothing

scala> res1.resultType.resultType.resultType
res4: reflect.runtime.universe.Type = scala.Nothing

scala> res1.finalResultType
res5: reflect.runtime.universe.Type = scala.Nothing

scala> typeOf[C].member(TermName("bar")).asMethod
res6: reflect.runtime.universe.MethodSymbol = method bar

scala> res6.info
res7: reflect.runtime.universe.Type = => scala.Int

scala> res6.info.resultType
res8: reflect.runtime.universe.Type = scala.Int

scala> res6.info.finalResultType
res9: reflect.runtime.universe.Type = scala.Int


Definition Classes
TypeApi
See also
resultType



abstract  def find(p: (Universe.Type) => Boolean): Option[Universe.Type]


Returns optionally first type (in a preorder traversal) which satisfies predicate p, or None if none exists. 

Definition Classes
TypeApi



abstract  def foreach(f: (Universe.Type) => Unit): Unit


Apply f to each part of this type, for side effects only

Definition Classes
TypeApi



abstract  def map(f: (Universe.Type) => Universe.Type): Universe.Type


Apply f to each part of this type, returning a new type. children get mapped before their parents

Definition Classes
TypeApi



abstract  def member(name: Universe.Name): Universe.Symbol


The member with given name, either directly declared or inherited, an OverloadedSymbol if several exist, NoSymbol if none exist. 

Definition Classes
TypeApi



abstract  def members: Universe.MemberScope



A Scope containing all members of this type (directly declared or inherited). Unlike declarations this method also returns inherited members.
 Members in the returned scope might appear in arbitrary order. Use declarations.sorted to get an ordered list of members. 


Definition Classes
TypeApi



abstract  def orElse(alt: => Universe.Type): Universe.Type


Provides an alternate if type is NoType. 

Definition Classes
TypeApi



abstract  def paramLists: List[List[Universe.Symbol]]


For a method or poly type, a list of its value parameter sections, the empty list of lists for all other types. 

Definition Classes
TypeApi



abstract  def resultType: Universe.Type



For a (nullary) method or poly type, its direct result type (can be a MethodType if the method has multiple argument lists), the type itself for all other types.
scala> class C { def foo[T](x: T)(y: T) = ??? }
defined class C

scala> typeOf[C].member(TermName("foo")).asMethod
res0: reflect.runtime.universe.MethodSymbol = method foo

scala> res0.info // PolyType wrapping a MethodType
res1: reflect.runtime.universe.Type = [T](x: T)(y: T)scala.Nothing

scala> res1.resultType // MethodType wrapping a MethodType
res2: reflect.runtime.universe.Type = (x: T)(y: T)scala.Nothing

scala> res1.resultType.resultType // vanilla MethodType
res3: reflect.runtime.universe.Type = (y: T)scala.Nothing

scala> res1.resultType.resultType.resultType
res4: reflect.runtime.universe.Type = scala.Nothing

scala> res1.finalResultType
res5: reflect.runtime.universe.Type = scala.Nothing


Definition Classes
TypeApi
See also
finalResultType



abstract  def substituteSymbols(from: List[Universe.Symbol], to: List[Universe.Symbol]): Universe.Type


Substitute symbols in to for corresponding occurrences of references to symbols from in this type. 

Definition Classes
TypeApi



abstract  def substituteTypes(from: List[Universe.Symbol], to: List[Universe.Type]): Universe.Type


Substitute types in to for corresponding occurrences of references to symbols from in this type. 

Definition Classes
TypeApi



abstract  def takesTypeArgs: Boolean


Is this type a type constructor that is missing its type arguments? 

Definition Classes
TypeApi



abstract  def termSymbol: Universe.Symbol


The term symbol associated with the type, or NoSymbol for types that do not refer to a term symbol. 

Definition Classes
TypeApi



abstract  def typeArgs: List[Universe.Type]



List of type arguments ingrained in this type reference. Depending on your use case you might or might not want to call dealias first.
scala> type T = List[Int]
defined type alias T

scala> typeOf[T].typeArgs
res0: List[reflect.runtime.universe.Type] = List()

scala> typeOf[T].dealias.typeArgs
res1: List[reflect.runtime.universe.Type] = List(scala.Int)


Definition Classes
TypeApi



abstract  def typeConstructor: Universe.Type


Returns the corresponding type constructor (e.g. List for List[T] or List[String]) 

Definition Classes
TypeApi



abstract  def typeParams: List[Universe.Symbol]


For a poly type, its type parameters, the empty list for all other types. 

Definition Classes
TypeApi



abstract  def typeSymbol: Universe.Symbol


The type symbol associated with the type, or NoSymbol for types that do not refer to a type symbol. 

Definition Classes
TypeApi



abstract  def weak_<:<(that: Universe.Type): Boolean


Does this type weakly conform to given type argument that, i.e., either conforms in terms of <:< or both are primitive number types that conform according to Section "Weak Conformance" in the spec. For example, Int weak_<:< Long. 

Definition Classes
TypeApi



abstract  def widen: Universe.Type



If this is a singleton type, widen it to its nearest underlying non-singleton base type by applying one or more underlying dereferences. If this is not a singleton type, returns this type itself.
 Example:
 class Outer { class C ; val x: C } val o: Outer <o.x.type>.widen = o.C
 Note that type aliases can hide beneath singleton types and singleton types can hide inside type aliases. Moreover, aliases might lurk in the upper bounds of abstract types. Therefore careful thought has to be applied to identify and carry out unwrapping logic specific to your use case. 


Definition Classes
TypeApi



abstract  def declaration(name: Universe.Name): Universe.Symbol



Definition Classes
TypeApi
Annotations

@deprecated 
Deprecated
(Since version 2.11.0) use decl instead
See also
decl



abstract  def declarations: Universe.MemberScope



Definition Classes
TypeApi
Annotations

@deprecated 
Deprecated
(Since version 2.11.0) use decls instead
See also
decls



abstract  def normalize: Universe.Type



Reduce to beta eta-long normal form. Expands type aliases and converts higher-kinded TypeRefs to PolyTypes. Functions on types are also implemented as PolyTypes.
 Example: (in the below, <List> is the type constructor of List) TypeRef(pre, <List>, List()) is replaced by PolyType(X, TypeRef(pre, <List>, List(X))) 


Definition Classes
TypeApi
Annotations

@deprecated 
Deprecated
(Since version 2.11.0) use dealias or etaExpand instead



abstract  def paramss: List[List[Universe.Symbol]]



Definition Classes
TypeApi
Annotations

@deprecated 
Deprecated
(Since version 2.11.0) use paramLists instead
See also
paramLists




Concrete Value Members

final  def !=(arg0: Any): Boolean


Definition Classes
AnyRef → Any


final  def ##(): Int


Definition Classes
AnyRef → Any


final  def ==(arg0: Any): Boolean


Definition Classes
AnyRef → Any


final  def asInstanceOf[T0]: T0


Definition Classes
Any


 def clone(): AnyRef


Attributes
protected[java.lang] 
Definition Classes
AnyRef
Annotations

@throws(classOf[java.lang.CloneNotSupportedException]) @native() 


final  def eq(arg0: AnyRef): Boolean


Definition Classes
AnyRef


 def equals(arg0: AnyRef): Boolean


Definition Classes
AnyRef → Any


 def finalize(): Unit


Attributes
protected[java.lang] 
Definition Classes
AnyRef
Annotations

@throws(classOf[java.lang.Throwable]) 


final  def getClass(): Class[_ <: AnyRef]


Definition Classes
AnyRef → Any
Annotations

@native() 


 def hashCode(): Int


Definition Classes
AnyRef → Any
Annotations

@native() 


final  def isInstanceOf[T0]: Boolean


Definition Classes
Any


final  def ne(arg0: AnyRef): Boolean


Definition Classes
AnyRef


final  def notify(): Unit


Definition Classes
AnyRef
Annotations

@native() 


final  def notifyAll(): Unit


Definition Classes
AnyRef
Annotations

@native() 


final  def synchronized[T0](arg0: => T0): T0


Definition Classes
AnyRef


 def toString(): String


Definition Classes
AnyRef → Any


final  def wait(): Unit


Definition Classes
AnyRef
Annotations

@throws(classOf[java.lang.InterruptedException]) 


final  def wait(arg0: Long, arg1: Int): Unit


Definition Classes
AnyRef
Annotations

@throws(classOf[java.lang.InterruptedException]) 


final  def wait(arg0: Long): Unit


Definition Classes
AnyRef
Annotations

@throws(classOf[java.lang.InterruptedException]) @native() 





    
{'path': 'public/docs/scala~2.13_reflection/scala/reflect/api/types$type.html', 'source': 'DevDocs.IO'}