Интерфейс scala.reflect.api.Types.ConstantTypeApi
интерфейс ConstantTypeApi extends Universe.TypeApi
Члены абстрактного значения
абстрактный метод <:<(that: Universe.Type): Boolean
Соответствует ли этот тип заданному типу аргумента that?
- Определяющие классы
- TypeApi
абстрактный метод =:=(that: Universe.Type): Boolean
Является ли этот тип эквивалентным заданному типу аргумента that?
- Определяющие классы
- TypeApi
абстрактный метод asSeenFrom(pre: Universe.Type, clazz: Universe.Symbol): Universe.Type
Этот тип, как виден из префикса pre и класса clazz. Это означает: Замените все ThisType из clazz или одного из его подклассов на pre и инициализируйте все параметры аргументами pre. Проделайте аналогично для ThisType, ссылающихся на внешние классы.
Пример:
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
- Определяющие классы
- TypeApi
абстрактный метод baseClasses: List[Universe.Symbol]
Список всех базовых классов этого типа (включая его собственный typeSymbol) в порядке линейной структуры, начиная с самого класса и заканчивая классом Any.
- Определяющие классы
- TypeApi
абстрактный метод baseType(clazz: Universe.Symbol): Universe.Type
Наименьший экземпляр типа данного класса, который является супертипом этого типа. Пример:
class D[T] class C extends p.D[Int] ThisType(C).baseType(D) = p.D[Int]
- Определяющие классы
- TypeApi
абстрактный метод companion: Universe.Type
Подпись типа компаньона символа базового класса. NoType, если базовый символ не является классом или у него нет компаньона.
- Определяющие классы
- TypeApi
абстрактный метод contains(sym: Universe.Symbol): Boolean
Содержит ли этот тип ссылку на данный символ?
- Определяющие классы
- TypeApi
абстрактный метод dealias: Universe.Type
Расширяет псевдонимы типов, возникающие из членов типа. Обратите внимание, что псевдонимы типов могут скрываться за одиночными типами, а одиночные типы могут скрываться внутри псевдонимов типов. Кроме того, псевдонимы могут скрываться в верхних ограничениях абстрактных типов. Поэтому необходимо тщательно подумать, чтобы определить и выполнить логику распаковки, специфичную для вашего случая использования.
- Определяющие классы
- TypeApi
абстрактный метод decl(name: Universe.Name): Universe.Symbol
Определенные или объявленные члены с именем name в этом типе; OverloadedSymbol, если несколько существуют, NoSymbol, если нет ни одного. Альтернативы перегруженного символа появляются в порядке их объявления.
- Определяющие классы
- TypeApi
абстрактный метод decls: Universe.MemberScope
Scope, содержащий члены, прямо объявленные в этом типе. В отличие от members, этот метод не возвращает унаследованные члены.
Члены в возвращаемом области могут появляться в произвольном порядке. Используйте declarations.sorted для получения упорядоченного списка членов.
- Определяющие классы
- TypeApi
абстрактный метод erasure: Universe.Type
Стертый тип, соответствующий этому типу после выполнения всех преобразований из Scala в Java.
- Определяющие классы
- TypeApi
абстрактный метод etaExpand: Universe.Type
Преобразует типы более высокого порядка TypeRefs в PolyTypes. Функции над типами также реализуются как PolyTypes.
Пример: (в примере ниже, <List> — это конструктор типов List) TypeRef(pre, <List>, List()) заменяется на PolyType(X, TypeRef(pre, <List>, List(X)))
- Определяющие классы
- TypeApi
абстрактный метод exists(p: (Universe.Type) => Boolean): Boolean
Существует ли часть этого типа, которая удовлетворяет предикату p?
- Определяющие классы
- TypeApi
abstract def finalResultType: Universe.Type
Для метода с каррированием/нулевого метода или политипного типа - его тип результата, не являющийся методом; для всех остальных типов - сам тип.
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]
Возвращает (опционально) первый тип (в обходе preorder) удовлетворяющий предикату p, или None, если такового нет.
- Definition Classes
- TypeApi
abstract def foreach(f: (Universe.Type) => Unit): Unit
Применить f к каждой части этого типа, только для побочных эффектов.
- Definition Classes
- TypeApi
abstract def map(f: (Universe.Type) => Universe.Type): Universe.Type
Применить f к каждой части этого типа, возвращая новый тип. Дочерние элементы отображаются до своих родителей.
- Definition Classes
- TypeApi
abstract def member(name: Universe.Name): Universe.Symbol
Элемент с заданным именем, объявленный напрямую или унаследованный; OverloadedSymbol, если существует несколько, NoSymbol, если нет ни одного.
- Definition Classes
- TypeApi
abstract def members: Universe.MemberScope
Scope содержащий все члены этого типа (объявленные напрямую или унаследованные). В отличие от declarations этот метод также возвращает унаследованные члены.
Члены в возвращаемой области видимости могут отображаться в произвольном порядке. Используйте declarations.sorted для получения упорядоченного списка членов.
- Definition Classes
- TypeApi
abstract def orElse(alt: => Universe.Type): Universe.Type
Предоставляет альтернативу, если тип NoType.
- Definition Classes
- TypeApi
abstract def paramLists: List[List[Universe.Symbol]]
Для метода или политипного типа - список его секций параметров значений; пустой список списков для всех остальных типов.
- Definition Classes
- TypeApi
abstract def resultType: Universe.Type
Для (нулевого) метода или политипного типа - его прямой тип результата (может быть MethodType, если метод имеет несколько списков аргументов); сам тип для всех остальных типов.
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
Заменить символы в to на соответствующие вхождения ссылок на символы from в этом типе.
- Definition Classes
- TypeApi
abstract def substituteTypes(from: List[Universe.Symbol], to: List[Universe.Type]): Universe.Type
Заменить типы в to на соответствующие вхождения ссылок на символы from в этом типе.
- Definition Classes
- TypeApi
abstract def takesTypeArgs: Boolean
Является ли этот тип конструктором типа, которому не хватает его аргументов типа?
- Definition Classes
- TypeApi
abstract def termSymbol: Universe.Symbol
Символ термина, связанный с типом, или NoSymbol для типов, которые не ссылаются на символ термина.
- Definition Classes
- TypeApi
abstract def typeArgs: List[Universe.Type]
Список аргументов типа, встроенных в эту ссылку на тип. В зависимости от вашего случая использования, вы можете или не хотите вызвать dealias в первую очередь.
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
Возвращает соответствующий конструктор типа (например, List для List[T] или List[String])
- Definition Classes
- TypeApi
abstract def typeParams: List[Universe.Symbol]
Для полиморфного типа — его параметры типа, для всех других типов — пустой список.
- Definition Classes
- TypeApi
abstract def typeSymbol: Universe.Symbol
Символ типа, связанный с типом, или NoSymbol для типов, которые не ссылаются на символ типа.
- Definition Classes
- TypeApi
abstract def value: Universe.Constant
abstract def weak_<:<(that: Universe.Type): Boolean
Слабо ли этот тип соответствует заданному аргументу типа that, т.е., соответствует ли он с точки зрения <:< или оба являются примитивными числовыми типами, которые соответствуют согласно разделу «Слабое соответствие» в спецификации. Например, Int weak_<:< Long.
- Definition Classes
- TypeApi
abstract def widen: Universe.Type
Если это тип-сингулярность, расширить его до ближайшего базового типа, не являющегося типом-сингулярностью, применив одну или несколько underlying дессылок. Если это не тип-сингулярность, возвращает этот же тип.
Пример:
класс Outer { класс C ; значение x: C } значение o: Outer <o.x.type>.widen = o.C
Обратите внимание, что псевдонимы типов могут скрываться под типами-сингулярностями, а типы-сингулярности — внутри псевдонимов типов. Кроме того, псевдонимы могут скрываться в верхних ограничениях абстрактных типов. Поэтому необходимо тщательно продумать логику распознавания и выполнения распаковки, специфичную для вашего случая использования.
- Definition Classes
- TypeApi
abstract def declaration(name: Universe.Name): Universe.Symbol
abstract def declarations: Universe.MemberScope
abstract def normalize: Universe.Type
Сведение к бета-эта-длинной нормальной форме. Расширяет псевдонимы типов и преобразует TypeRefs более высокого порядка в PolyTypes. Функции над типами также реализуются как PolyTypes.
Пример: (в примере ниже <List> — конструктор типа List) TypeRef(pre, <List>, List()) заменяется на PolyType(X, TypeRef(pre, <List>, List(X)))
- Definition Classes
- TypeApi
- Annotations
- @deprecated
- Устарело
(С версии 2.11.0) используйте
dealiasилиetaExpandвместо
abstract def paramss: List[List[Universe.Symbol]]
- Definition Classes
- TypeApi
- Annotations
- @deprecated
- Устарело
(С версии 2.11.0) используйте
paramListsвместо- См. также
Члены конкретных значений
final def !=(arg0: Any): Boolean
- Определяющие классы
- AnyRef → Any
final def ##(): Int
- Определяющие классы
- AnyRef → Any
def +(other: String): String
- Неявный
- Этот член добавлен с помощью неявного преобразования из Universe.ConstantTypeApi в any2stringadd[Universe.ConstantTypeApi] с помощью метода any2stringadd в scala.Predef.
- Определяющие классы
- any2stringadd
def ->[B](y: B): (Universe.ConstantTypeApi, B)
- Неявный
- Этот член добавлен с помощью неявного преобразования из Universe.ConstantTypeApi в ArrowAssoc[Universe.ConstantTypeApi] с помощью метода ArrowAssoc в scala.Predef.
- Определяющие классы
- ArrowAssoc
- Аннотации
- @inline()
final def ==(arg0: Any): Boolean
- Определяющие классы
- AnyRef → Any
final def asInstanceOf[T0]: T0
- Определяющие классы
- Any
def clone(): AnyRef
- Атрибуты
- protected[java.lang]
- Определяющие классы
- AnyRef
- Аннотации
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
def ensuring(cond: (Universe.ConstantTypeApi) => Boolean, msg: => Any): Universe.ConstantTypeApi
- Неявный
- Этот член добавлен с помощью неявного преобразования из Universe.ConstantTypeApi в Ensuring[Universe.ConstantTypeApi] с помощью метода Ensuring в scala.Predef.
- Определяющие классы
- Ensuring
def ensuring(cond: (Universe.ConstantTypeApi) => Boolean): Universe.ConstantTypeApi
- Неявный
- Этот член добавлен с помощью неявного преобразования из Universe.ConstantTypeApi в Ensuring[Universe.ConstantTypeApi] с помощью метода Ensuring в scala.Predef.
- Определяющие классы
- Ensuring
def ensuring(cond: Boolean, msg: => Any): Universe.ConstantTypeApi
- Неявный
- Этот член добавлен с помощью неявного преобразования из Universe.ConstantTypeApi в Ensuring[Universe.ConstantTypeApi] с помощью метода Ensuring в scala.Predef.
- Определяющие классы
- Ensuring
def ensuring(cond: Boolean): Universe.ConstantTypeApi
- Неявный
- Этот член добавлен с помощью неявного преобразования из Universe.ConstantTypeApi в Ensuring[Universe.ConstantTypeApi] с помощью метода Ensuring в scala.Predef.
- Определяющие классы
- Ensuring
final def eq(arg0: AnyRef): Boolean
- Определяющие классы
- AnyRef
def equals(arg0: AnyRef): Boolean
- Определяющие классы
- AnyRef → Any
def finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
def formatted(fmtstr: String): String
- Implicit
- Этот член добавлен с помощью неявного преобразования из Universe.ConstantTypeApi в StringFormat[Universe.ConstantTypeApi] с помощью метода StringFormat в scala.Predef.
- Definition Classes
- StringFormat
- Annotations
- @inline()
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()
© 2002-2019 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://www.scala-lang.org/api/2.13.0/scala-reflect/scala/reflect/api/Types$ConstantTypeApi.html
Интерфейс, поддерживаемый всеми типами констант. Основным источником информации о типах является страница scala.reflect.api.Types.