Spec-Zone.ru › Scala 2.13 Reflection

Трейт scala.reflect.api.Symbols.TypeSymbolApi

трайт TypeSymbolApi extends Universe.SymbolApi

API типов символов. Основной источник информации о символах — страница Symbols.

Класс Symbol определяет isXXX тестовые методы, такие как isPublic или isFinal, params и returnType методы для символов методов, baseClasses для символов классов и так далее. Некоторые из этих методов не имеют смысла для определённых подклассов Symbol и возвращают NoSymbol, Nil или другие пустые значения.

Self Type
Universe.TypeSymbol
Source
Symbols.scala
Линейные супертипы
Universe.SymbolApi, AnyRef, Any
Известные подклассы
FreeTypeSymbol, FreeTypeSymbolApi, ClassSymbol, ClassSymbolApi, TypeSymbol

Члены типов

final тип NameType = Universe.TypeName

Символы типов имеют свои имена типа TypeName.

Определяющие классы
TypeSymbolApi → SymbolApi

Абстрактные члены-значения

абстрактный def alternatives: Список[СимволUniverse]

Перегруженные альтернативы этого символа.

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

абстрактный def annotations: Список[АннотацияUniverse]

Список аннотаций, прикрепленных к этому символу.

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

абстрактный def companion: СимволUniverse

Для класса: его компаньон-объект, если он существует. Для модуля или модульного класса: компаньон-класс модуля, если он существует. Для пакета или класса пакета: NoSymbol. Для всех остальных: NoSymbol.

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

абстрактный def filter(cond: (СимволUniverse) => Boolean): СимволUniverse

Фильтрует основополагающие альтернативы (или список из одного элемента, состоящий из самого символа, если символ не перегружен). Возвращает перегруженный символ, если есть несколько совпадений. Возвращает NoSymbol, если совпадений нет.

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

абстрактный def fullName: Строка

Закодированное полное имя пути этого символа, где имена внешних и внутренних имен разделены точками.

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

абстрактный def info: ТипUniverse

Подпись типа этого символа.

Этот метод всегда возвращает подписи максимально обобщенным образом, даже если подлежащий символ получен из экземпляра обобщенного типа. Например, подпись метода def map[B](f: (A) => B): List[B], который ссылается на параметр типа A объявляющего класса List[A], всегда будет содержать A, независимо от того, загружен ли map из List[_] или из List[Int]. Чтобы получить подпись с соответствующим образом инстанцированными параметрами типа, необходимо использовать infoIn.

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

абстрактный def infoIn(site: ТипUniverse): ТипUniverse

Подпись типа этого символа, рассматриваемого как член данного типа site.

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

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

Является ли этот символ абстрактным (т.е. абстрактный класс, абстрактный метод, значение или член типа)?

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

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

Отмечен ли этот символ как «абстрактный переопределение»?

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

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

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

Представляет ли этот метод конструктор?

Если owner является классом, то это обычный JVM-конструктор. Если owner является трайтом, то это конструктор миксина.

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

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

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

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

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

Является ли этот символ окончательным?

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

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

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

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

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

Представляет ли этот символ неявное значение, определение, класс или параметр?

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

abstract def isJava: Boolean

Определён ли этот символ Java?

Definition Classes
SymbolApi

abstract def isJavaAnnotation: Boolean

Представляет ли этот символ интерфейс аннотации Java?

Definition Classes
SymbolApi

abstract def isJavaEnum: Boolean

Представляет ли этот символ класс перечисления Java или значение перечисления Java?

Definition Classes
SymbolApi

abstract def isMacro: Boolean

Является ли этот символ макросом?

Definition Classes
SymbolApi

abstract def isPackage: Boolean

Представляет ли этот символ определение пакета? Известные проблемы: https://github.com/scala/bug/issues/6732.

Definition Classes
SymbolApi

abstract def isPackageClass: Boolean

Представляет ли этот символ класс пакета? Если да, то isClass также гарантированно будет истинным.

Definition Classes
SymbolApi

abstract def isParameter: Boolean

Является ли этот символ параметром (параметром метода или параметром типа)?

Definition Classes
SymbolApi

abstract def isPrivate: Boolean

Представляет ли этот символ приватное объявление или определение? Если да, то privateWithin может рассказать больше о области видимости этого символа.

Definition Classes
SymbolApi

abstract def isPrivateThis: Boolean

Представляет ли этот символ объявление или определение, написанное в исходном файле как private[this] или сгенерированное в форме дерева/символа с комбинацией флагов LOCAL и PRIVATE? Если да, то isPrivate гарантированно будет истинным.

Definition Classes
SymbolApi

abstract def isProtected: Boolean

Представляет ли этот символ защищённое объявление или определение? Если да, то privateWithin может рассказать больше о области видимости этого символа.

Definition Classes
SymbolApi

abstract def isProtectedThis: Boolean

Представляет ли этот символ объявление или определение, написанное в исходном файле как protected[this] или сгенерированное в форме дерева/символа с комбинацией флагов LOCAL и PROTECTED? Если да, то isProtected гарантированно будет истинным.

Definition Classes
SymbolApi

abstract def isPublic: Boolean

Представляет ли этот символ публичное объявление или определение?

Definition Classes
SymbolApi

abstract def isSpecialized: Boolean

Является ли этот символ специализированным параметром типа или сгенерированным специализированным членом?

Definition Classes
SymbolApi

abstract def isStatic: Boolean

Является ли этот символ статическим (т.е. без внешнего экземпляра)? В: Когда именно символ помечается как STATIC? О: Если это член объекта верхнего уровня, или объекта, содержащегося в объекте верхнего уровня, или любого количества уровней в глубину. http://groups.google.com/group/scala-internals/browse_thread/thread/d385bcd60b08faf6

Definition Classes
SymbolApi

abstract def isSynthetic: Boolean

Представляет ли этот символ синтетическую (т.е. сгенерированную компилятором) сущность? Примерами синтетических сущностей являются аксессоры для vals и vars.

Definition Classes
SymbolApi

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

Если это NoSymbol, возвращает NoSymbol, иначе возвращает результат применения f к этому символу.

Definition Classes
SymbolApi

abstract def name: TypeSymbol.NameType

Имя символа как члена типа Name.

Definition Classes
SymbolApi

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

Предоставляет альтернативу, если символ является NoSymbol.

Definition Classes
SymbolApi

abstract def overrides: List[Universe.Symbol]

Возвращает все символы, переопределенные этим символом.

Definition Classes
SymbolApi

abstract def owner: Universe.Symbol

Владелец этого символа. Это символ, который непосредственно содержит определение текущего символа. Символ NoSymbol не имеет владельца, и вызов этого метода для него вызывает внутреннюю ошибку. Владелец корневого класса Scala scala.reflect.api.Mirror.RootClass и корневого объекта Scala scala.reflect.api.Mirror.RootPackage является NoSymbol. Каждый другой символ имеет цепочку владельцев, которая заканчивается scala.reflect.api.Mirror.RootClass.

Definition Classes
SymbolApi

abstract def pos: Universe.Position

Позиция дерева.

Definition Classes
SymbolApi

abstract def privateWithin: Universe.Symbol

Устанавливается, когда символ имеет модификатор вида private[X] или protected[X], иначе NoSymbol.

Кодирование уровня доступа: существуют три флага Scala (PRIVATE, PROTECTED и LOCAL), которые объединяются со значением privateWithin («foo» в private[foo]), чтобы определить, откуда можно получить доступ к сущности. Значения следующие:

Доступ PRIVATE ограничен только классом. Доступ PROTECTED ограничен классом и его подклассами. LOCAL может быть установлен только в сочетании с PRIVATE или PROTECTED. Дальнейшее ограничение доступа к тому же экземпляру объекта.

Кроме того, privateWithin может использоваться для установки барьера видимости. При установке все, что содержится в указанном вложенном пакете или классе, имеет доступ. Он несовместим с PRIVATE или LOCAL, но добавляется к PROTECTED (т. е. если доступ разрешен либо флагами, либо privateWithin, то он разрешен).

Уровни доступа Java переводятся следующим образом:

java private: isPrivate && (privateWithin == NoSymbol) java package: !isPrivate && !isProtected && (privateWithin == enclosingPackage) java protected: isProtected && (privateWithin == enclosingPackage) java public: !isPrivate && !isProtected && (privateWithin == NoSymbol)

Definition Classes
SymbolApi

abstract def suchThat(cond: (Universe.Symbol) => Boolean): Universe.Symbol

Делает то же самое, что и filter, но аварийно завершает работу, если совпадений несколько.

Definition Classes
SymbolApi

abstract def toType: Universe.Type

Ссылка на тип, который ссылается на этот символ типа. Обратите внимание, что если символ является членом класса, то почти всегда требуется asTypeIn с типом места вместо него.

Пример: Дано объявление класса class C[T] { ... } , которое генерирует символ C. Тогда C.toType является типом C[T].

В противоположность этому C.info будет подписью типа вида PolyType(ClassInfoType(...)), которая описывает параметры типа, параметры значения, родительские типы и члены C.

abstract def toTypeConstructor: Universe.Type

Конструктор типа, соответствующий этому символу типа. Это отличается от toType тем, что параметры типа являются частью результатов toType, но не toTypeConstructor.

Пример: Дано объявление класса class C[T] { ... } , которое генерирует символ C. Тогда C.toType - это тип C[T], но C.toTypeConstructor - это C.

abstract def toTypeIn(site: Universe.Type): Universe.Type

abstract def typeParams: List[Universe.Symbol]

abstract def typeSignature: Universe.Type

Definition Classes
SymbolApi
See also

info

abstract def typeSignatureIn(site: Universe.Type): Universe.Type

Определяющие классы
SymbolApi
См. также

infoIn

абстрактный def allOverriddenSymbols: Список[Символ Вселенной]

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

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

См. также

overrides

абстрактный def associatedFile: Файл

Файл исходного кода, если этот символ был создан во время текущей компиляции, или файл класса, если этот символ загружен из *.class или *.jar.

Тип возвращаемого значения — scala.reflect.io.AbstractFile, который принадлежит экспериментальной части Scala reflection. Не использовать, если не знаете, что делаете. В последующих версиях этот API будет доработан и представлен как часть scala.reflect.api.

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

(С версии 2.11.0) используйте pos.source.file

абстрактный def companionSymbol: Символ Вселенной

Для класса: модуль или фабрика case класса с тем же именем в том же пакете. Для модуля: класс с тем же именем в том же пакете. Для остальных: NoSymbol.

Этот API может возвращать неожиданные результаты для модульных классов, пакетов и пакетированных классов. Используйте companion для получения предсказуемых результатов.

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

(С версии 2.11.0) используйте companion , но будьте внимательны к возможным изменениям в поведении

абстрактный def isAbstractType: Булево

Представляет ли этот символ определение абстрактного типа?

Аннотации
@deprecated
Устаревшее

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

Члены-значения (конкретные)

final def !=(arg0: Any): Boolean

Определяющие классы
AnyRef → Any

final def ##(): Int

Определяющие классы
AnyRef → Any

def +(other: String): String

Неявный
Этот член добавлен неявным преобразованием из Universe.TypeSymbolApi вany2stringadd[Universe.TypeSymbolApi] с помощью метода any2stringadd в scala.Predef.
Определяющие классы
any2stringadd

def ->[B](y: B): (Universe.TypeSymbolApi, B)

Неявный
Этот член добавлен неявным преобразованием из Universe.TypeSymbolApi вArrowAssoc[Universe.TypeSymbolApi] с помощью метода ArrowAssoc в scala.Predef.
Определяющие классы
ArrowAssoc
Аннотации
@inline()

final def ==(arg0: Any): Boolean

Определяющие классы
AnyRef → Any

def asClass: Universe.ClassSymbol

Это символ, преобразованный в ClassSymbol, представляющий класс или тракт.

Определяющие классы
SymbolApi
Исключения

ScalaReflectionException, если isClass равно false.

final def asInstanceOf[T0]: T0

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

def asMethod: Universe.MethodSymbol

Этот символ преобразуется в MethodSymbol.

Определяющие классы
SymbolApi
Исключения

ScalaReflectionException, если isMethod равно false.

def asModule: Universe.ModuleSymbol

Этот символ преобразуется в ModuleSymbol, определенный по определению объекта.

Определяющие классы
SymbolApi
Исключения

ScalaReflectionException, если isModule равно false.

def asTerm: Universe.TermSymbol

Этот символ преобразуется в TermSymbol.

Определяющие классы
SymbolApi
Исключения

ScalaReflectionException, если isTerm равно false.

final def asType: Universe.TypeSymbol

Этот символ преобразуется в TypeSymbol.

Определяющие классы
TypeSymbolApi → SymbolApi
Исключения

ScalaReflectionException, если isType равно false.

def clone(): AnyRef

Атрибуты
protected[java.lang]
Определяющие классы
AnyRef
Аннотации
@throws(classOf[java.lang.CloneNotSupportedException]) @native()

def ensuring(cond: (Universe.TypeSymbolApi) => Boolean, msg: => Any): Universe.TypeSymbolApi

Неявный
Этот член добавлен неявным преобразованием из Universe.TypeSymbolApi вEnsuring[Universe.TypeSymbolApi] с помощью метода Ensuring в scala.Predef.
Определяющие классы
Ensuring

def ensuring(cond: (Universe.TypeSymbolApi) => Boolean): Universe.TypeSymbolApi

Неявное
Этот член добавляется неявным преобразованием из Universe.TypeSymbolApi в Ensuring[Universe.TypeSymbolApi], выполняемым методом Ensuring в scala.Predef.
Определяющие классы
Ensuring

def ensuring(cond: Boolean, msg: => Any): Universe.TypeSymbolApi

Неявное
Этот член добавляется неявным преобразованием из Universe.TypeSymbolApi в Ensuring[Universe.TypeSymbolApi], выполняемым методом Ensuring в scala.Predef.
Определяющие классы
Ensuring

def ensuring(cond: Boolean): Universe.TypeSymbolApi

Неявное
Этот член добавляется неявным преобразованием из Universe.TypeSymbolApi в Ensuring[Universe.TypeSymbolApi], выполняемым методом Ensuring в scala.Predef.
Определяющие классы
Ensuring

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

def formatted(fmtstr: String): String

Неявное
Этот член добавляется неявным преобразованием из Universe.TypeSymbolApi в StringFormat[Universe.TypeSymbolApi], выполняемым методом StringFormat в scala.Predef.
Определяющие классы
StringFormat
Аннотации
@inline()

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

Определяющие классы
AnyRef → Any
Аннотации
@native()

def hashCode(): Int

Определяющие классы
AnyRef → Any
Аннотации
@native()

def isClass: Boolean

Обозначает ли этот символ определение класса или трейта? Если да, то isType также гарантированно истинно.

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

final def isInstanceOf[T0]: Boolean

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

def isMethod: Boolean

Обозначает ли этот символ определение метода? Если да, то isTerm также гарантированно истинно.

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

def isModule: Boolean

Обозначает ли этот символ определение модуля (т.е. он является результатом определения объекта)? Если да, то isTerm также гарантированно истинно.

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

def isModuleClass: Boolean

Обозначает ли этот символ определение класса, неявно связанного с определением объекта (класс модуля в терминологии компилятора Scala)? Если да, то isType также гарантированно истинно.

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

def isOverloadedMethod: Boolean

Используется для предоставления более информативного сообщения об ошибке для asMethod.

Атрибуты
protected
Определяющие классы
SymbolApi

def isTerm: Boolean

Представляет ли этот символ определение термина? Обратите внимание, что каждый символ является либо термином, либо типом. Таким образом, для каждого символа sym (за исключением NoSymbol), либо sym.isTerm является истинным, либо sym.isType является истинным.

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

final def isType: Boolean

Представляет ли этот символ определение типа? Обратите внимание, что каждый символ является либо термином, либо типом. Таким образом, для каждого символа sym (за исключением NoSymbol), либо sym.isTerm является истинным, либо sym.isType является истинным.

Определяющие классы
TypeSymbolApi → SymbolApi

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/Symbols$TypeSymbolApi.html

Spec-Zone.ru

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