Интерфейс scala.reflect.api.Symbols.TermSymbolApi
интерфейс TermSymbolApi extends Universe.SymbolApi
Члены-типы
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
abstract def typeSignatureIn(site: Universe.Type): Universe.Type
abstract def allOverriddenSymbols: List[Universe.Symbol]
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.fileinstead
abstract def companionSymbol: Universe.Symbol
Для класса: модуль или фабрика case-класса с тем же именем в том же пакете. Для модуля: класс с тем же именем в том же пакете. Для всех остальных случаев: NoSymbol.
Этот API может возвращать неожиданные результаты для модульных классов, пакетов и пакетов-классов. Используйте companion для получения предсказуемых результатов.
- Definition Classes
- SymbolApi
- Annotations
- @deprecated
- Deprecated
(Since version 2.11.0) use
companioninstead, 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
Интерфейс символов термов. Основным источником информации о символах является страница Symbols.
Класс Symbol определяет
isXXXтестовые методы, такие какisPublicилиisFinal,paramsиreturnTypeметоды для символов методов,baseClassesдля символов классов и так далее. Некоторые из этих методов не имеют смысла для определенных подклассовSymbolи возвращаютNoSymbol,Nilили другие пустые значения.