Spec-Zone.ru › Scala 2.13 Reflection

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

трайт ModuleSymbolApi extends Universe.TermSymbolApi

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

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

Self Type
Universe.ModuleSymbol
Source
Symbols.scala
Линейные надтипы
Universe.TermSymbolApi, Universe.SymbolApi, AnyRef, Any
Известные подклассы
ModuleSymbol

Члены типа

final тип NameType = Universe.TermName

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

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

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

abstract def accessed: Universe.Symbol

Базовое поле для метода-акцессора, NoSymbol для всех других символов терминов.

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

abstract def alternatives: List[Universe.Symbol]

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

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

abstract def annotations: List[Universe.Annotation]

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

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

abstract def companion: Universe.Symbol

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

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

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

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

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

abstract def fullName: String

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

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

abstract def getter: Universe.Symbol

Метод-получатель для базового поля val или val, NoSymbol для всех других символов терминов.

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

abstract def info: Universe.Type

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

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

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

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

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

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

abstract def isAbstract: Boolean

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

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

abstract def isAbstractOverride: Boolean

Отмечен ли этот символ как "абстрактный переопределяющий"?

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

abstract def isAccessor: Boolean

Представляет ли этот символ метод-получатель или метод-установщик?

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

abstract def isByNameParam: Boolean

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

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

abstract def isCaseAccessor: Boolean

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

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

abstract def isConstructor: Boolean

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

Если owner — класс, то это конструктор JVM по умолчанию. Если owner — трайт, то это конструктор миксина.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Представляет ли этот символ перегруженный метод? Если да, то isMethod ложно, а список вложенных альтернатив можно найти с помощью alternatives.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Definition Classes
TermSymbolApi

abstract def isSpecialized: Boolean

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

Definition Classes
SymbolApi

abstract def isStable: Boolean

Обозначает ли этот символ стабильное значение?

Definition Classes
TermSymbolApi

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

Введён ли этот символ как val?

Definition Classes
TermSymbolApi

abstract def isVar: Boolean

Введён ли этот символ как var?

Definition Classes
TermSymbolApi

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

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

Definition Classes
SymbolApi

abstract def moduleClass: Universe.Symbol

Класс, неявно связанный с определением объекта. Можно вернуться от класса модуля к связанному символу модуля, просмотрев его selfType.termSymbol.

abstract def name: ModuleSymbol.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 setter: Universe.Symbol

Метод-сеттер для вспомогательного поля val или var, NoSymbol для всех остальных терм-символов.

Definition Classes
TermSymbolApi

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

Выполняет то же, что и filter, но аварийно завершается, если совпадений несколько.

Definition Classes
SymbolApi

abstract def typeSignature: Universe.Type

Definition Classes
SymbolApi
См. также

info

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

Definition Classes
SymbolApi
См. также

infoIn

abstract def allOverriddenSymbols: List[Universe.Symbol]

Definition Classes
SymbolApi
Аннотации
@deprecated
Устаревший

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

См. также

overrides

abstract def associatedFile: AbstractFile

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

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

Definition Classes
SymbolApi
Аннотации
@deprecated
Устаревший

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

abstract def companionSymbol: Universe.Symbol

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

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

Definition Classes
SymbolApi
Аннотации
@deprecated
Устаревший

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

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

final def !=(arg0: Any): Boolean

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

final def ##(): Int

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

def +(other: String): String

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

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

Неявный
Этот член добавлен с помощью неявного преобразования из Universe.ModuleSymbolApi вArrowAssoc[Universe.ModuleSymbolApi] с помощью метода 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.

final def asModule: Universe.ModuleSymbol

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

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

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

final def asTerm: Universe.TermSymbol

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

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

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

def asType: Universe.TypeSymbol

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

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

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

def clone(): AnyRef

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

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

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

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

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

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

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

def ensuring(cond: Boolean): Universe.ModuleSymbolApi

Неявный
Этот член добавляется неявным преобразованием из Universe.ModuleSymbolApi в Ensuring[Universe.ModuleSymbolApi], выполняемым методом 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.ModuleSymbolApi в StringFormat[Universe.ModuleSymbolApi], выполняемым методом 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

final def isModule: Boolean

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

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

Spec-Zone.ru

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