Трейт scala.reflect.api.Symbols.SymbolApi
trait SymbolApi extends AnyRef
Типы-члены
abstract type NameType >: Null <: Universe.Name
Тип имени символа. Может быть TermName или TypeName в зависимости от того, является ли это TermSymbol или TypeSymbol.
Пространства имён для имен типов не пересекаются с пространствами имён для имён терминов. Этот факт отражён в разных типах для имён TermSymbol и TypeSymbol.
Абстрактные члены значений
абстрактный def alternatives: Список[СимволUniverse]
абстрактный def annotations: Список[АннотацияUniverse]
абстрактный def companion: СимволUniverse
Для класса: его объект-компаньон, если он существует. Для модуля или модульного класса: класс-компаньон модуля, если он существует. Для пакета или класса пакета: NoSymbol. Для всех остальных: NoSymbol.
абстрактный def filter(cond: (СимволUniverse) => Boolean): СимволUniverse
Фильтрует базовые альтернативы (или список из одного элемента, состоящий из самого символа, если символ не перегружен). Возвращает перегруженный символ, если есть несколько совпадений. Возвращает NoSymbol, если совпадений нет.
абстрактный def fullName: Строка
абстрактный def info: ТипUniverse
Подпись типа этого символа.
Этот метод всегда возвращает подписи максимально обобщенным способом, даже если базовый символ получен из экземпляра обобщенного типа. Например, подпись метода def map[B](f: (A) => B): List[B], который ссылается на параметр типа A класса-декларанта List[A], всегда будет содержать A, независимо от того, загружен ли map из List[_] или из List[Int]. Чтобы получить подпись с соответствующими параметрами типа, следует использовать infoIn.
абстрактный def infoIn(site: ТипUniverse): ТипUniverse
абстрактный def isAbstract: Булево
Является ли этот символ абстрактным (т.е. абстрактный класс, абстрактный метод, значение или член типа)?
абстрактный def isAbstractOverride: Булево
абстрактный def isConstructor: Булево
Представляет ли этот метод конструктор?
Если owner является классом, то это конструктор JVM по умолчанию. Если owner является траитом, то это конструктор миксина.
абстрактный def isFinal: Булево
абстрактный def isImplementationArtifact: Булево
абстрактный def isImplicit: Булево
абстрактный def isJava: Булево
абстрактный def isJavaAnnotation: Булево
абстрактный def isJavaEnum: Булево
абстрактный def isMacro: Булево
абстрактный def isPackage: Булево
абстрактный def isPackageClass: Булево
абстрактный def isParameter: Булево
абстрактный def isPrivate: Булево
абстрактный def isPrivateThis: Булево
абстрактный def isProtected: Булево
абстрактный def isProtectedThis: Булево
абстрактный def isPublic: Булево
абстрактный def isSpecialized: Булево
абстрактный def isStatic: Булево
Является ли этот символ статическим (т.е. без внешнего экземпляра)? В: Когда именно сим маркируется как STATIC? О: Если это член верхнего уровня объекта, или объекта, содержащегося в объекте верхнего уровня, или на любом количестве уровней вглубь. http://groups.google.com/group/scala-internals/browse_thread/thread/d385bcd60b08faf6
абстрактный def isSynthetic: Булево
Представляет ли этот символ синтетическое (т.е. сгенерированное компилятором) сущность? Примеры синтетических сущностей — аксессоры для значений и переменных.
абстрактный def map(f: (Universe.Symbol) => Universe.Symbol): Universe.Symbol
абстрактный def name: Symbol.NameType
абстрактный def orElse(alt: => Universe.Symbol): Universe.Symbol
абстрактный def overrides: List[Universe.Symbol]
абстрактный def owner: Universe.Symbol
Владелец этого символа. Это символ, который непосредственно содержит определение текущего символа. Символ NoSymbol не имеет владельца, и вызов этого метода для него приводит к внутренней ошибке. Владелец корневого класса Scala scala.reflect.api.Mirror.RootClass и корневого объекта Scala scala.reflect.api.Mirror.RootPackage — это NoSymbol. У всех остальных символов есть цепочка владельцев, которая заканчивается scala.reflect.api.Mirror.RootClass.
абстрактный def pos: Universe.Position
абстрактный 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)
абстрактный def suchThat(cond: (Universe.Symbol) => Boolean): Universe.Symbol
абстрактный def typeSignature: Universe.Type
- См. также
абстрактный def typeSignatureIn(site: Universe.Type): Universe.Type
- См. также
абстрактный def allOverriddenSymbols: List[Universe.Symbol]
- Аннотации
- @deprecated
- Устаревшее
(Начиная с версии 2.11.0) используйте
overridesвместо- См. также
абстрактный def associatedFile: AbstractFile
Файл исходного кода, если этот символ создан во время этой компиляции, или файл класса, если этот символ загружен из *.class или *.jar.
Возвращаемый тип — scala.reflect.io.AbstractFile, который принадлежит экспериментальной части Scala Reflection. Не следует использовать, если вы не знаете, что делаете. В последующих релизах этот API будет уточнён и доступен как часть scala.reflect.api.
- Аннотации
- @deprecated
- Устаревшее
(Начиная с версии 2.11.0) используйте
pos.source.fileвместо
абстрактный def companionSymbol: Universe.Symbol
Для класса: модуль или фабрика case class с тем же именем в том же пакете. Для модуля: класс с тем же именем в том же пакете. Для всех остальных: NoSymbol.
Этот API может возвращать неожиданные результаты для модульных классов, пакетов и пакетированных классов. Используйте companion вместо, чтобы получить предсказуемые результаты.
- Аннотации
- @deprecated
- Устаревшее
(Начиная с версии 2.11.0) используйте
companionвместо, но будьте внимательны к возможным изменениям в поведении
Члены-значения конкретного типа
final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
final def ##(): Int
- Definition Classes
- AnyRef → Any
def +(other: String): String
- Implicit
- Этот член добавлен неявным преобразованием из Universe.SymbolApi вany2stringadd[Universe.SymbolApi] с помощью метода any2stringadd в scala.Predef.
- Definition Classes
- any2stringadd
def ->[B](y: B): (Universe.SymbolApi, B)
- Implicit
- Этот член добавлен неявным преобразованием из Universe.SymbolApi вArrowAssoc[Universe.SymbolApi] с помощью метода ArrowAssoc в scala.Predef.
- Definition Classes
- ArrowAssoc
- Annotations
- @inline()
final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
def asClass: Universe.ClassSymbol
Этот символ преобразуется в ClassSymbol, представляющий класс или трайт.
- Исключения
ScalaReflectionException, еслиisClassложно.
final def asInstanceOf[T0]: T0
- Definition Classes
- Any
def asMethod: Universe.MethodSymbol
Этот символ преобразуется в MethodSymbol.
- Исключения
ScalaReflectionException, еслиisMethodложно.
def asModule: Universe.ModuleSymbol
Этот символ преобразуется в ModuleSymbol, определённый с помощью определения объекта.
- Исключения
ScalaReflectionException, еслиisModuleложно.
def asTerm: Universe.TermSymbol
Этот символ преобразуется в TermSymbol.
- Исключения
ScalaReflectionException, еслиisTermложно.
def asType: Universe.TypeSymbol
Этот символ преобразуется в TypeSymbol.
- Исключения
ScalaReflectionException, еслиisTypeложно.
def clone(): AnyRef
- Атрибуты
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
def ensuring(cond: (Universe.SymbolApi) => Boolean, msg: => Any): Universe.SymbolApi
- Implicit
- Этот член добавлен неявным преобразованием из Universe.SymbolApi вEnsuring[Universe.SymbolApi] с помощью метода Ensuring в scala.Predef.
- Definition Classes
- Ensuring
def ensuring(cond: (Universe.SymbolApi) => Boolean): Universe.SymbolApi
- Implicit
- Этот член добавлен неявным преобразованием из Universe.SymbolApi вEnsuring[Universe.SymbolApi] с помощью метода Ensuring в scala.Predef.
- Definition Classes
- Ensuring
def ensuring(cond: Boolean, msg: => Any): Universe.SymbolApi
- Неявный
- Этот член добавлен неявным преобразованием из Universe.SymbolApi в Ensuring[Universe.SymbolApi] выполняемым методом Ensuring в scala.Predef.
- Классы определений
- Ensuring
def ensuring(cond: Boolean): Universe.SymbolApi
- Неявный
- Этот член добавлен неявным преобразованием из Universe.SymbolApi в Ensuring[Universe.SymbolApi] выполняемым методом 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.SymbolApi в StringFormat[Universe.SymbolApi] выполняемым методом StringFormat в scala.Predef.
- Классы определений
- StringFormat
- Аннотации
- @inline()
final def getClass(): Class[_ <: AnyRef]
- Классы определений
- AnyRef → Any
- Аннотации
- @native()
def hashCode(): Int
- Классы определений
- AnyRef → Any
- Аннотации
- @native()
def isClass: Boolean
final def isInstanceOf[T0]: Boolean
- Классы определений
- Any
def isMethod: Boolean
def isModule: Boolean
Представляет ли этот символ определение модуля (т.е. получен из определения объекта)? Если да, то isTerm также гарантированно true.
def isModuleClass: Boolean
def isOverloadedMethod: Boolean
Используется для предоставления более информативного сообщения об ошибке для asMethod.
- Атрибуты
- protected
def isTerm: Boolean
Представляет ли этот символ определение термина? Обратите внимание, что каждый символ является либо термином, либо типом. Таким образом, для каждого символа sym (кроме NoSymbol), либо sym.isTerm true, либо sym.isType true.
def isType: Boolean
Представляет ли этот символ определение типа? Обратите внимание, что каждый символ является либо термином, либо типом. Таким образом, для каждого символа sym (кроме NoSymbol), либо sym.isTerm true, либо sym.isType true.
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$SymbolApi.html
API символов. Основным источником информации о символах является страница Symbols.
Класс Symbol определяет
isXXXтестовые методы, такие какisPublicилиisFinal,paramsиreturnTypeметоды для символов методов,baseClassesдля символов классов и так далее. Некоторые из этих методов не имеют смысла для определенных подклассовSymbolи возвращаютNoSymbol,Nilили другие пустые значения.