Spec-Zone.ru › Scala 2.13 Reflection

Аннотация scala.reflect.api.Types.AnnotatedType

Компаньон класс AnnotatedTypeExtractor

абстрактный тип AnnotatedType >: Null <: Universe.AnnotatedTypeApi with Universe.Type

Тип AnnotatedType используется для аннотированных типов типа <type> @<annotation>.

Источник
Types.scala
Линейные супертипы
Universe.<refinement>, Universe.AnnotatedTypeApi, Universe.TypeApi, AnyRef, Any

Члены-значения абстрактного типа

абстрактный def <:<(that: Universe.Type): Boolean

Соответствует ли этот тип заданному аргументу типа?

Определяющие классы
TypeApi

абстрактный def =:=(that: Universe.Type): Boolean

Является ли этот тип эквивалентным заданному аргументу типа?

Определяющие классы
TypeApi

абстрактный def annotations: List[Universe.Annotation]

Аннотации.

Определяющие классы
AnnotatedTypeApi

абстрактный def asSeenFrom(pre: Universe.Type, clazz: Universe.Symbol): Universe.Type

Этот тип, как видно из префикса и класса. Это означает: Заменить все из или одного из его подклассов на и инициализировать все параметры аргументами. Процедура аналогична для, ссылающихся на внешние классы.

Пример:

Определяющие классы
TypeApi

абстрактный def baseClasses: List[Universe.Symbol]

Список всех базовых классов этого типа (включая его собственный тип-символ) в порядке линейной упорядоченности, начиная с самого класса и заканчивая классом Any.

Определяющие классы
TypeApi

абстрактный def baseType(clazz: Universe.Symbol): Universe.Type

Наименьшая экземпляр типа заданного класса, который является супертипом этого типа. Пример:

Определяющие классы
TypeApi

абстрактный def companion: Universe.Type

Подпись типа компаньона символа базового класса. NoType, если базовый символ не является символом класса или у него нет компаньона.

Определяющие классы
TypeApi

абстрактный def contains(sym: Universe.Symbol): Boolean

Содержит ли этот тип ссылку на данный символ?

Определяющие классы
TypeApi

абстрактный def dealias: Universe.Type

Расширяет псевдонимы типов, возникающие из членов типов. Обратите внимание, что псевдонимы типов могут скрываться за типами-синглтонами, а типы-синглтоны могут скрываться внутри псевдонимов типов. Кроме того, псевдонимы могут скрываться в верхних границах абстрактных типов. Поэтому необходимо тщательно продумать логику распаковки, специфичную для вашего случая.

Определяющие классы
TypeApi

абстрактный def decl(name: Universe.Name): Universe.Symbol

Определенные или объявленные члены с именем в этом типе; OverloadedSymbol, если таковых несколько, NoSymbol, если таковых нет. Альтернативы перегруженного символа появляются в порядке их объявления.

Определяющие классы
TypeApi

абстрактный def decls: Universe.MemberScope

Область, содержащий непосредственно объявленные члены этого типа. В отличие от, этот метод не возвращает унаследованные члены.

Члены в возвращаемом объеме могут появляться в произвольном порядке. Используйте для получения упорядоченного списка членов.

Определяющие классы
TypeApi

абстрактный def erasure: Universe.Type

Тип стирания, соответствующий этому типу после выполнения всех преобразований из Scala в Java.

Определяющие классы
TypeApi

абстрактный def etaExpand: Universe.Type

Преобразует типы-конструторы высшего порядка в политипы. Функции над типами также реализуются как политипы.

Пример: (в нижеприведенном примере <List> - конструктор типа List) TypeRef(pre, <List>, List()) заменяется на PolyType(X, TypeRef(pre, <List>, List(X)))

Определяющие классы
TypeApi

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

Существует ли часть этого типа, которая удовлетворяет предикату p?

Definition Classes
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]

Возвращает необязательно первый тип (в обходе в прямом порядке), который удовлетворяет предикату 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

Replace types in to with corresponding symbol references from in this type.

Definition Classes
TypeApi

абстрактный def takesTypeArgs: Boolean

Является ли этот тип конструктором типа, которому не хватает аргументов типа?

Определяющие классы
TypeApi

абстрактный def termSymbol: Universe.Symbol

Символ термина, связанный с типом, или NoSymbol для типов, которые не ссылаются на символ термина.

Определяющие классы
TypeApi

абстрактный 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)
Определяющие классы
TypeApi

абстрактный def typeConstructor: Universe.Type

Возвращает соответствующий конструктор типа (например, List для List[T] или List[String])

Определяющие классы
TypeApi

абстрактный def typeParams: List[Universe.Symbol]

Для полиморфного типа — его параметры типа, для всех других типов — пустой список.

Определяющие классы
TypeApi

абстрактный def typeSymbol: Universe.Symbol

Символ типа, связанный с типом, или NoSymbol для типов, которые не ссылаются на символ типа.

Определяющие классы
TypeApi

абстрактный def underlying: Universe.Type

Аннотацию.

Определяющие классы
AnnotatedTypeApi

абстрактный def weak_<:<(that: Universe.Type): Boolean

Слабо ли этот тип соответствует заданному аргументу типа that, т.е., либо соответствует с точки зрения <:<, или оба являются примитивными числовыми типами, которые соответствуют разделу «Слабое соответствие» в спецификации. Например, Int weak_<:< Long.

Определяющие классы
TypeApi

абстрактный def widen: Universe.Type

Если это тип-сингулярность, расширить его до ближайшего базового несингулярного типа, применив одну или несколько underlying дессылок. Если это не тип-сингулярность, возвращает этот тип.

Пример:

class Outer { class C ; val x: C } val o: Outer <o.x.type>.widen = o.C

Обратите внимание, что псевдонимы типов могут скрываться под типами-сингулярностями, а типы-сингулярности могут скрываться внутри псевдонимов типов. Кроме того, псевдонимы могут скрываться в верхних границах абстрактных типов. Поэтому к идентификации и выполнению логики распаковки необходимо подойти с особой тщательностью, конкретной для вашего случая использования.

Определяющие классы
TypeApi

абстрактный def declaration(name: Universe.Name): Universe.Symbol

Определяющие классы
TypeApi
Аннотации
@deprecated
Устарело

(С версии 2.11.0) используйте decl вместо

См. также

decl

абстрактный def declarations: Universe.MemberScope

Определяющие классы
TypeApi
Аннотации
@deprecated
Устарело

(С версии 2.11.0) используйте decls вместо

См. также

decls

абстрактный def normalize: Universe.Type

Привести к бета-эта-длинной нормальной форме. Расширяет псевдонимы типов и преобразует типы с высшими порядками в PolyTypes. Функции над типами также реализованы как PolyTypes.

Пример: (в примере ниже, <List> — конструктор типа List) TypeRef(pre, <List>, List()) заменяется на PolyType(X, TypeRef(pre, <List>, List(X)))

Определяющие классы
TypeApi
Аннотации
@deprecated
Устарело

(С версии 2.11.0) используйте dealias или etaExpand вместо

абстрактный def paramss: List[List[Universe.Symbol]]

Классы-определения
TypeApi
Аннотации
@deprecated
Устарело

(С версии 2.11.0) используйте paramLists вместо этого

См. также

paramLists

Конкретные члены значений

final def !=(arg0: Any): Boolean

Классы-определения
AnyRef → Any

final def ##(): Int

Классы-определения
AnyRef → Any

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()

final def eq(arg0: AnyRef): Boolean

Классы-определения
AnyRef

def equals(arg0: AnyRef): Boolean

Классы-определения
AnyRef → Any

def finalize(): Unit

Атрибуты
protected[java.lang]
Классы-определения
AnyRef
Аннотации
@throws(classOf[java.lang.Throwable])

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

Классы-определения
AnyRef → Any
Аннотации
@native()

def hashCode(): Int

Классы-определения
AnyRef → Any
Аннотации
@native()

final def isInstanceOf[T0]: Boolean

Классы-определения
Any

final def ne(arg0: AnyRef): Boolean

Классы-определения
AnyRef

final def notify(): Unit

Классы-определения
AnyRef
Аннотации
@native()

final def notifyAll(): Unit

Классы-определения
AnyRef
Аннотации
@native()

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

Классы-определения
AnyRef

def toString(): String

Классы-определения
AnyRef → Any

final def wait(): Unit

Классы-определения
AnyRef
Аннотации
@throws(classOf[java.lang.InterruptedException])

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

Классы-определения
AnyRef
Аннотации
@throws(classOf[java.lang.InterruptedException])

final def wait(arg0: Long): Unit

Классы-определения
AnyRef
Аннотации
@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$AnnotatedType.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API