Интерфейс scala.reflect.api.Symbols.MethodSymbolApi
трайт MethodSymbolApi extends Universe.TermSymbolApi
Члены-типы
final тип NameType = Universe.TermName
Символы методов имеют свои имена типа TermName.
- Определяющие классы
- TermSymbolApi → SymbolApi
Члены-значения абстрактного типа
абстрактный def accessed: Universe.Symbol
Поддерживающее поле для метода-акцессора, NoSymbol для всех других символов терминов.
- Определяющие классы
- TermSymbolApi
абстрактный def alternatives: List[Universe.Symbol]
Перегруженные альтернативы этого символа.
- Определяющие классы
- SymbolApi
абстрактный def annotations: List[Universe.Annotation]
Список аннотаций, прикреплённых к этому символу.
- Определяющие классы
- SymbolApi
абстрактный def companion: Universe.Symbol
Для класса: его компаньон-объект, если он существует. Для модуля или класса модуля: компаньон-класс модуля, если он существует. Для пакета или класса пакета: NoSymbol. Для всех остальных: NoSymbol.
- Определяющие классы
- SymbolApi
абстрактный def exceptions: List[Universe.Symbol]
Исключения, которые, как известно, могут быть выброшены этим методом. Для методов Scala список вычисляется из аннотаций throws, присутствующих в методе. Для методов Java список вычисляется из throws-клаузул, прикреплённых к методу и сохранённых в байт-коде.
абстрактный def filter(cond: (Universe.Symbol) => Boolean): Universe.Symbol
Фильтрация базовых альтернатив (или списка с единственным элементом, состоящим из самого символа, если символ не перегружен). Возвращает перегруженный символ, если есть несколько совпадений. Возвращает NoSymbol, если совпадений нет.
- Определяющие классы
- SymbolApi
абстрактный def fullName: String
Кодированное полное имя пути этого символа, где внешние и внутренние имена разделены точками.
- Определяющие классы
- SymbolApi
абстрактный def getter: Universe.Symbol
Метод-аксессор для поддерживающего поля val или val, NoSymbol для всех других символов терминов.
- Определяющие классы
- TermSymbolApi
абстрактный 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
Представляет ли этот символ метод-аксессор (getter или setter)?
- Определяющие классы
- TermSymbolApi
абстрактный def isByNameParam: Boolean
Представляет ли этот символ параметр по имени?
- Определяющие классы
- TermSymbolApi
абстрактный def isCaseAccessor: Boolean
Представляет ли этот символ поле класса-случая, соответствующее параметру в первом списке параметров первичного конструктора этого класса?
- Definition Classes
- TermSymbolApi
abstract def isConstructor: Boolean
Представляет ли этот метод конструктор?
Если owner является классом, то это стандартный конструктор JVM. Если owner является трайтом, то это конструктор миксина.
- Definition Classes
- SymbolApi
abstract def isFinal: Boolean
Является ли этот символ финальным?
- Definition Classes
- SymbolApi
abstract def isGetter: Boolean
Представляет ли этот символ геттер поля? Если да, то isMethod также гарантированно будет истинным.
- Definition Classes
- TermSymbolApi
abstract def isImplementationArtifact: Boolean
Представляет ли этот символ артефакт реализации, не предназначенный для публичного использования? Примеры таких артефактов - мосты стирания и внешние поля.
- Definition Classes
- 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
Представляет ли этот символ ленивое значение?
- Definition Classes
- TermSymbolApi
abstract def isMacro: Boolean
Является ли этот символ макросом?
- Definition Classes
- SymbolApi
abstract def isOverloaded: Boolean
Представляет ли этот символ перегруженный метод? Если да, то isMethod ложно, и список вложенных альтернатив можно найти через alternatives.
- Definition Classes
- TermSymbolApi
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
Представляет ли этот символ поле класса, сгенерированное из параметра этого класса?
- Definition Classes
- TermSymbolApi
abstract def isParamWithDefault: Boolean
Представляет ли этот символ параметр со значением по умолчанию?
- Definition Classes
- TermSymbolApi
abstract def isParameter: Boolean
Является ли этот символ параметром (параметр метода или параметр типа)?
- Definition Classes
- SymbolApi
abstract def isPrimaryConstructor: Boolean
abstract def isPrivate: Boolean
Представляет ли этот символ частное объявление или определение? Если да, privateWithin может рассказать больше о области видимости этого символа.
- Классы определений
- SymbolApi
абстрактный def isPrivateThis: Boolean
Представляет ли этот символ объявление или определение, записанное в исходном файле как private[this] или сгенерированное в виде дерева/символа с сочетанием флагов LOCAL и PRIVATE? Если да, isPrivate гарантированно будет true.
- Классы определений
- SymbolApi
абстрактный def isProtected: Boolean
Представляет ли этот символ защищенное объявление или определение? Если да, privateWithin может рассказать больше о области видимости этого символа.
- Классы определений
- SymbolApi
абстрактный def isProtectedThis: Boolean
Представляет ли этот символ объявление или определение, записанное в исходном файле как protected[this] или сгенерированное в виде дерева/символа с сочетанием флагов LOCAL и PROTECTED? Если да, isProtected гарантированно будет true.
- Классы определений
- SymbolApi
абстрактный def isPublic: Boolean
Представляет ли этот символ публичное объявление или определение?
- Классы определений
- SymbolApi
абстрактный def isSetter: Boolean
Представляет ли этот символ установщик поля? Если да, isMethod также гарантированно будет true.
- Классы определений
- TermSymbolApi
абстрактный def isSpecialized: Boolean
Является ли этот символ специализированным параметром типа или сгенерированным специализированным членом?
- Классы определений
- SymbolApi
абстрактный def isStable: Boolean
Обозначает ли этот символ стабильное значение?
- Классы определений
- TermSymbolApi
абстрактный def isStatic: Boolean
Является ли этот символ статическим (т. е. без внешнего экземпляра)? В: Когда именно sym отмечается как STATIC? О: Если это член верхнего уровня объекта, или объекта, содержащегося в объекте верхнего уровня, или на любой глубине вложенности. http://groups.google.com/group/scala-internals/browse_thread/thread/d385bcd60b08faf6
- Классы определений
- SymbolApi
абстрактный def isSynthetic: Boolean
Представляет ли этот символ синтетическое (т. е. сгенерированное компилятором) сущность? Примеры синтетических сущностей — аксессоры для vals и vars.
- Классы определений
- SymbolApi
абстрактный def isVal: Boolean
Введен ли этот символ как val?
- Классы определений
- TermSymbolApi
абстрактный def isVar: Boolean
Введен ли этот символ как var?
- Классы определений
- TermSymbolApi
абстрактный def isVarargs: Boolean
абстрактный def map(f: (Universe.Symbol) => Universe.Symbol): Universe.Symbol
Если это NoSymbol, возвращает NoSymbol, в противном случае возвращает результат применения f к этому символу.
- Классы определений
- SymbolApi
абстрактный def name: MethodSymbol.NameType
Имя символа как члена типа Name.
- Классы определений
- SymbolApi
абстрактный def orElse(alt: => Universe.Symbol): Universe.Symbol
Предоставляет альтернативу, если символ является NoSymbol.
- Классы определений
- SymbolApi
абстрактный 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 paramLists: List[List[Universe.Symbol]]
Все списки параметров метода.
Может использоваться для различения нульарных методов и методов с пустыми списками параметров. Для нульарного метода возвращает пустой список (т.е. List()). Для метода с пустым списком параметров возвращает список, содержащий пустой список (т.е. List(List())).
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 returnType: Universe.Type
abstract def setter: Universe.Symbol
Метод-сеттер для вспомогательного поля val или val, NoSymbol для всех других термических символов.
- Definition Classes
- TermSymbolApi
abstract def suchThat(cond: (Universe.Symbol) => Boolean): Universe.Symbol
Делает то же самое, что и filter, но аварийно завершается, если совпадений несколько.
- Definition Classes
- SymbolApi
abstract def typeParams: List[Universe.Symbol]
abstract 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.
- Определяющие классы
- SymbolApi
- Аннотации
- @deprecated
- Устаревший
(С версии 2.11.0) используйте
pos.source.fileвместо этого
abstract def companionSymbol: Universe.Symbol
Для класса: модуль или фабрика case класса с тем же именем в том же пакете. Для модуля: класс с тем же именем в том же пакете. Для всех остальных: NoSymbol.
Этот API может возвращать неожиданные результаты для модульных классов, пакетов и пакетов классов. Используйте companion вместо этого, чтобы получить предсказуемые результаты.
- Определяющие классы
- SymbolApi
- Аннотации
- @deprecated
- Устаревший
(С версии 2.11.0) используйте
companionвместо этого, но будьте осторожны из-за возможных изменений в поведении
abstract def paramss: List[List[Universe.Symbol]]
- Аннотации
- @deprecated
- Устаревший
(С версии 2.11.0) используйте
paramListsвместо этого- См. также
paramLists Название, заканчивающееся на «ss», указывает, что тип результата — список списков.
Члены конкретных значений
final def !=(arg0: Any): Boolean
- Определяющие классы
- AnyRef → Any
final def ##(): Int
- Определяющие классы
- AnyRef → Any
def +(other: String): String
- Неявный
- Этот член добавлен неявным преобразованием из Universe.MethodSymbolApi вany2stringadd[Universe.MethodSymbolApi] с помощью метода any2stringadd в scala.Predef.
- Определяющие классы
- any2stringadd
def ->[B](y: B): (Universe.MethodSymbolApi, B)
- Неявный
- Этот член добавлен неявным преобразованием из Universe.MethodSymbolApi вArrowAssoc[Universe.MethodSymbolApi] с помощью метода ArrowAssoc в scala.Predef.
- Определяющие классы
- ArrowAssoc
- Аннотации
- @inline()
final def ==(arg0: Any): Boolean
- Определяющие классы
- AnyRef → Any
def asClass: Universe.ClassSymbol
Этот символ преобразован в ClassSymbol, представляющий класс или трайт.
- Определяющие классы
- SymbolApi
- Исключения
ScalaReflectionExceptionеслиisClassложно.
final def asInstanceOf[T0]: T0
- Определяющие классы
- Any
final def asMethod: Universe.MethodSymbol
Этот символ преобразован в MethodSymbol.
- Определяющие классы
- MethodSymbolApi → SymbolApi
- Исключения
ScalaReflectionExceptionеслиisMethodложно.
def asModule: Universe.ModuleSymbol
Этот символ преобразован в ModuleSymbol, определённый в объекте.
- Определяющие классы
- SymbolApi
- Исключения
ScalaReflectionExceptionеслиisModuleложно.
final def asTerm: Universe.TermSymbol
Этот символ преобразован в TermSymbol.
- Определяющие классы
- TermSymbolApi → SymbolApi
- Исключения
ScalaReflectionExceptionеслиisTermложно.
def asType: Universe.TypeSymbol
Этот символ преобразован в TypeSymbol.
- Определяющие классы
- SymbolApi
- Исключения
ScalaReflectionExceptionеслиisTypeложно.
def clone(): AnyRef
- Атрибуты
- protected[java.lang]
- Определяющие классы
- AnyRef
- Аннотации
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
def ensuring(cond: (Universe.MethodSymbolApi) => Boolean, msg: => Any): Universe.MethodSymbolApi
- Неявный
- Этот член добавлен неявным преобразованием из Universe.MethodSymbolApi вEnsuring[Universe.MethodSymbolApi] с помощью метода Ensuring в scala.Predef.
- Определяющие классы
- Ensuring
def ensuring(cond: (Universe.MethodSymbolApi) => Boolean): Universe.MethodSymbolApi
- Неявный
- Этот член добавлен неявным преобразованием из Universe.MethodSymbolApi в Ensuring[Universe.MethodSymbolApi] с помощью метода Ensuring в scala.Predef.
- Определения классов
- Ensuring
def ensuring(cond: Boolean, msg: => Any): Universe.MethodSymbolApi
- Неявный
- Этот член добавлен неявным преобразованием из Universe.MethodSymbolApi в Ensuring[Universe.MethodSymbolApi] с помощью метода Ensuring в scala.Predef.
- Определения классов
- Ensuring
def ensuring(cond: Boolean): Universe.MethodSymbolApi
- Неявный
- Этот член добавлен неявным преобразованием из Universe.MethodSymbolApi в Ensuring[Universe.MethodSymbolApi] с помощью метода 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.MethodSymbolApi в StringFormat[Universe.MethodSymbolApi] с помощью метода 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
final def isMethod: Boolean
Представляет ли этот символ определение метода? Если да, то isTerm также гарантированно истинно.
- Определения классов
- MethodSymbolApi → SymbolApi
def isModule: Boolean
Представляет ли этот символ определение модуля (т.е. полученный из определения объекта)? Если да, то isTerm также гарантированно истинно.
- Определения классов
- SymbolApi
def isModuleClass: Boolean
Представляет ли этот символ определение класса, неявным образом связанного с определением объекта (модульный класс в терминологии компилятора Scala)? Если да, то isType также гарантированно истинно.
- Определения классов
- 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$MethodSymbolApi.html
Интерфейс символов методов. Основным источником информации о символах является страница Symbols.
Класс Symbol определяет
isXXXтестовые методы, такие какisPublicилиisFinal,paramsиreturnTypeметоды для символов методов,baseClassesдля символов классов и так далее. Некоторые из этих методов не имеют смысла для определенных подклассовSymbolи возвращаютNoSymbol,Nilили другие пустые значения.