Spec-Zone.ru › Scala 2.13 Reflection

Интерфейс scala.reflect.api.Symbols.TermSymbolApi

интерфейс TermSymbolApi extends Universe.SymbolApi

Интерфейс символов термов. Основным источником информации о символах является страница Symbols.

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

Тип "self"
Universe.TermSymbol
Источник
Symbols.scala
Линейные супертипы
Universe.SymbolApi, AnyRef, Any
Известные подклассы
FreeTermSymbol, FreeTermSymbolApi, MethodSymbol, MethodSymbolApi, ModuleSymbol, ModuleSymbolApi, TermSymbol

Члены-типы

final тип NameType = Universe.TermName

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

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

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

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

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

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

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

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

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

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

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

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

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

абстрактный def filter(cond: (Universe.Symbol) => Boolean): Universe.Symbol

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

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

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

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

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

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

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

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

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

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

абстрактный def infoIn(site: Universe.Type): Universe.Type

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

abstract def isImplicit: Boolean

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

Definition Classes
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 isLazy: Boolean

abstract def isMacro: Boolean

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

Definition Classes
SymbolApi

abstract def isOverloaded: Boolean

abstract def isPackage: Boolean

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

Definition Classes
SymbolApi

abstract def isPackageClass: Boolean

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

Definition Classes
SymbolApi

abstract def isParamAccessor: Boolean

abstract def isParamWithDefault: Boolean

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 isSetter: Boolean

abstract def isSpecialized: Boolean

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

Definition Classes
SymbolApi

abstract def isStable: Boolean

abstract def isStatic: Boolean

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

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

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

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

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

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

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

абстрактный def map(f: (Universe.Symbol) => Universe.Symbol): Universe.Symbol

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

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

абстрактный def name: TermSymbol.NameType

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

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

абстрактный def orElse(alt: => Universe.Symbol): Universe.Symbol

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

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

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

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

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

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

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

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

абстрактный def pos: Universe.Position

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

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

абстрактный 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)

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

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

абстрактный def suchThat(cond: (Universe.Symbol) => Boolean): Universe.Symbol

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

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

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

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

info

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

Definition Classes
SymbolApi
See also

infoIn

abstract def allOverriddenSymbols: List[Universe.Symbol]

Definition Classes
SymbolApi
Annotations
@deprecated
Deprecated

(Since version 2.11.0) use overrides instead

See also

overrides

abstract def associatedFile: AbstractFile

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

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

Definition Classes
SymbolApi
Annotations
@deprecated
Deprecated

(Since version 2.11.0) use pos.source.file instead

abstract def companionSymbol: Universe.Symbol

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

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

Definition Classes
SymbolApi
Annotations
@deprecated
Deprecated

(Since version 2.11.0) use companion instead, but beware of possible changes in behavior

Члены-значения

final def !=(arg0: Any): Boolean

Definition Classes
AnyRef → Any

final def ##(): Int

Definition Classes
AnyRef → Any

def +(other: String): String

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

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

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

final def ==(arg0: Any): Boolean

Definition Classes
AnyRef → Any

def asClass: Universe.ClassSymbol

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

Definition Classes
SymbolApi
Исключения

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

final def asInstanceOf[T0]: T0

Definition Classes
Any

def asMethod: Universe.MethodSymbol

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

Definition Classes
SymbolApi
Исключения

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

def asModule: Universe.ModuleSymbol

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

Definition Classes
SymbolApi
Исключения

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

final def asTerm: Universe.TermSymbol

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

Definition Classes
TermSymbolApi → SymbolApi
Исключения

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

def asType: Universe.TypeSymbol

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

Definition Classes
SymbolApi
Исключения

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

def clone(): AnyRef

Атрибуты
protected[java.lang]
Definition Classes
AnyRef
Аннотации
@throws(classOf[java.lang.CloneNotSupportedException]) @native()

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

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

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

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

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

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

def ensuring(cond: Boolean): Universe.TermSymbolApi

Неявный
Этот член добавлен неявным преобразованием из Universe.TermSymbolApi вEnsuring[Universe.TermSymbolApi] с помощью метода 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.TermSymbolApi вStringFormat[Universe.TermSymbolApi] с помощью метода StringFormat в scala.Predef.
Определяющие классы
StringFormat
Аннотации
@inline()

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

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

def hashCode(): Int

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

def isClass: Boolean

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

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

final def isInstanceOf[T0]: Boolean

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

def isMethod: Boolean

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

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

def isModule: Boolean

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

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

def isModuleClass: Boolean

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

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

def isOverloadedMethod: Boolean

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

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

final def isTerm: Boolean

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

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

def isType: Boolean

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

Определяющие классы
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$TermSymbolApi.html

Spec-Zone.ru

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