Трейт scala.reflect.api.Symbols.TypeSymbolApi
трайт TypeSymbolApi extends Universe.SymbolApi
Члены типов
final тип NameType = Universe.TypeName
Символы типов имеют свои имена типа TypeName.
- Определяющие классы
- TypeSymbolApi → SymbolApi
Абстрактные члены-значения
абстрактный def alternatives: Список[СимволUniverse]
Перегруженные альтернативы этого символа.
- Определяющие классы
- SymbolApi
абстрактный def annotations: Список[АннотацияUniverse]
Список аннотаций, прикрепленных к этому символу.
- Определяющие классы
- SymbolApi
абстрактный def companion: СимволUniverse
Для класса: его компаньон-объект, если он существует. Для модуля или модульного класса: компаньон-класс модуля, если он существует. Для пакета или класса пакета: NoSymbol. Для всех остальных: NoSymbol.
- Определяющие классы
- SymbolApi
абстрактный def filter(cond: (СимволUniverse) => Boolean): СимволUniverse
Фильтрует основополагающие альтернативы (или список из одного элемента, состоящий из самого символа, если символ не перегружен). Возвращает перегруженный символ, если есть несколько совпадений. Возвращает NoSymbol, если совпадений нет.
- Определяющие классы
- SymbolApi
абстрактный def fullName: Строка
Закодированное полное имя пути этого символа, где имена внешних и внутренних имен разделены точками.
- Определяющие классы
- SymbolApi
абстрактный def info: ТипUniverse
Подпись типа этого символа.
Этот метод всегда возвращает подписи максимально обобщенным образом, даже если подлежащий символ получен из экземпляра обобщенного типа. Например, подпись метода def map[B](f: (A) => B): List[B], который ссылается на параметр типа A объявляющего класса List[A], всегда будет содержать A, независимо от того, загружен ли map из List[_] или из List[Int]. Чтобы получить подпись с соответствующим образом инстанцированными параметрами типа, необходимо использовать infoIn.
- Определяющие классы
- SymbolApi
абстрактный def infoIn(site: ТипUniverse): ТипUniverse
Подпись типа этого символа, рассматриваемого как член данного типа site.
- Определяющие классы
- SymbolApi
абстрактный def isAbstract: Boolean
Является ли этот символ абстрактным (т.е. абстрактный класс, абстрактный метод, значение или член типа)?
- Определяющие классы
- SymbolApi
абстрактный def isAbstractOverride: Boolean
Отмечен ли этот символ как «абстрактный переопределение»?
- Определяющие классы
- SymbolApi
абстрактный def isAliasType: Boolean
абстрактный def isConstructor: Boolean
Представляет ли этот метод конструктор?
Если owner является классом, то это обычный JVM-конструктор. Если owner является трайтом, то это конструктор миксина.
- Определяющие классы
- SymbolApi
абстрактный def isContravariant: Boolean
абстрактный def isCovariant: Boolean
абстрактный def isExistential: Boolean
абстрактный def isFinal: Boolean
Является ли этот символ окончательным?
- Определяющие классы
- SymbolApi
абстрактный def isImplementationArtifact: Boolean
Представляет ли этот символ артефакт реализации, который не предназначен для публичного использования? Примеры таких артефактов — мосты стирания и внешние поля.
- Определяющие классы
- SymbolApi
абстрактный def isImplicit: Boolean
Представляет ли этот символ неявное значение, определение, класс или параметр?
- Определяющие классы
- 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 isMacro: Boolean
Является ли этот символ макросом?
- Definition Classes
- SymbolApi
abstract def isPackage: Boolean
Представляет ли этот символ определение пакета? Известные проблемы: https://github.com/scala/bug/issues/6732.
- Definition Classes
- SymbolApi
abstract def isPackageClass: Boolean
Представляет ли этот символ класс пакета? Если да, то isClass также гарантированно будет истинным.
- Definition Classes
- SymbolApi
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 isSpecialized: Boolean
Является ли этот символ специализированным параметром типа или сгенерированным специализированным членом?
- Definition Classes
- SymbolApi
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 map(f: (Universe.Symbol) => Universe.Symbol): Universe.Symbol
Если это NoSymbol, возвращает NoSymbol, иначе возвращает результат применения f к этому символу.
- Definition Classes
- SymbolApi
abstract def name: TypeSymbol.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 suchThat(cond: (Universe.Symbol) => Boolean): Universe.Symbol
Делает то же самое, что и filter, но аварийно завершает работу, если совпадений несколько.
- Definition Classes
- SymbolApi
abstract def toType: Universe.Type
Ссылка на тип, который ссылается на этот символ типа. Обратите внимание, что если символ является членом класса, то почти всегда требуется asTypeIn с типом места вместо него.
Пример: Дано объявление класса class C[T] { ... } , которое генерирует символ C. Тогда C.toType является типом C[T].
В противоположность этому C.info будет подписью типа вида PolyType(ClassInfoType(...)), которая описывает параметры типа, параметры значения, родительские типы и члены C.
abstract def toTypeConstructor: Universe.Type
Конструктор типа, соответствующий этому символу типа. Это отличается от toType тем, что параметры типа являются частью результатов toType, но не toTypeConstructor.
Пример: Дано объявление класса class C[T] { ... } , которое генерирует символ C. Тогда C.toType - это тип C[T], но C.toTypeConstructor - это C.
abstract def toTypeIn(site: Universe.Type): Universe.Type
abstract def typeParams: List[Universe.Symbol]
abstract def typeSignature: Universe.Type
abstract def typeSignatureIn(site: Universe.Type): Universe.Type
абстрактный def allOverriddenSymbols: Список[Символ Вселенной]
абстрактный def associatedFile: Файл
Файл исходного кода, если этот символ был создан во время текущей компиляции, или файл класса, если этот символ загружен из *.class или *.jar.
Тип возвращаемого значения — scala.reflect.io.AbstractFile, который принадлежит экспериментальной части Scala reflection. Не использовать, если не знаете, что делаете. В последующих версиях этот API будет доработан и представлен как часть scala.reflect.api.
- Определяющие классы
- SymbolApi
- Аннотации
- @deprecated
- Устаревшее
(С версии 2.11.0) используйте
pos.source.file
абстрактный def companionSymbol: Символ Вселенной
Для класса: модуль или фабрика case класса с тем же именем в том же пакете. Для модуля: класс с тем же именем в том же пакете. Для остальных: NoSymbol.
Этот API может возвращать неожиданные результаты для модульных классов, пакетов и пакетированных классов. Используйте companion для получения предсказуемых результатов.
- Определяющие классы
- SymbolApi
- Аннотации
- @deprecated
- Устаревшее
(С версии 2.11.0) используйте
companion, но будьте внимательны к возможным изменениям в поведении
абстрактный def isAbstractType: Булево
Представляет ли этот символ определение абстрактного типа?
- Аннотации
- @deprecated
- Устаревшее
(С версии 2.11.0) используйте isAbstract
Члены-значения (конкретные)
final def !=(arg0: Any): Boolean
- Определяющие классы
- AnyRef → Any
final def ##(): Int
- Определяющие классы
- AnyRef → Any
def +(other: String): String
- Неявный
- Этот член добавлен неявным преобразованием из Universe.TypeSymbolApi вany2stringadd[Universe.TypeSymbolApi] с помощью метода any2stringadd в scala.Predef.
- Определяющие классы
- any2stringadd
def ->[B](y: B): (Universe.TypeSymbolApi, B)
- Неявный
- Этот член добавлен неявным преобразованием из Universe.TypeSymbolApi вArrowAssoc[Universe.TypeSymbolApi] с помощью метода 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.
def asModule: Universe.ModuleSymbol
Этот символ преобразуется в ModuleSymbol, определенный по определению объекта.
- Определяющие классы
- SymbolApi
- Исключения
ScalaReflectionException, еслиisModuleравно false.
def asTerm: Universe.TermSymbol
Этот символ преобразуется в TermSymbol.
- Определяющие классы
- SymbolApi
- Исключения
ScalaReflectionException, еслиisTermравно false.
final def asType: Universe.TypeSymbol
Этот символ преобразуется в TypeSymbol.
- Определяющие классы
- TypeSymbolApi → SymbolApi
- Исключения
ScalaReflectionException, еслиisTypeравно false.
def clone(): AnyRef
- Атрибуты
- protected[java.lang]
- Определяющие классы
- AnyRef
- Аннотации
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
def ensuring(cond: (Universe.TypeSymbolApi) => Boolean, msg: => Any): Universe.TypeSymbolApi
- Неявный
- Этот член добавлен неявным преобразованием из Universe.TypeSymbolApi вEnsuring[Universe.TypeSymbolApi] с помощью метода Ensuring в scala.Predef.
- Определяющие классы
- Ensuring
def ensuring(cond: (Universe.TypeSymbolApi) => Boolean): Universe.TypeSymbolApi
- Неявное
- Этот член добавляется неявным преобразованием из Universe.TypeSymbolApi в Ensuring[Universe.TypeSymbolApi], выполняемым методом Ensuring в scala.Predef.
- Определяющие классы
- Ensuring
def ensuring(cond: Boolean, msg: => Any): Universe.TypeSymbolApi
- Неявное
- Этот член добавляется неявным преобразованием из Universe.TypeSymbolApi в Ensuring[Universe.TypeSymbolApi], выполняемым методом Ensuring в scala.Predef.
- Определяющие классы
- Ensuring
def ensuring(cond: Boolean): Universe.TypeSymbolApi
- Неявное
- Этот член добавляется неявным преобразованием из Universe.TypeSymbolApi в Ensuring[Universe.TypeSymbolApi], выполняемым методом 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.TypeSymbolApi в StringFormat[Universe.TypeSymbolApi], выполняемым методом 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
def isModule: Boolean
Обозначает ли этот символ определение модуля (т.е. он является результатом определения объекта)? Если да, то isTerm также гарантированно истинно.
- Определяющие классы
- SymbolApi
def isModuleClass: Boolean
Обозначает ли этот символ определение класса, неявно связанного с определением объекта (класс модуля в терминологии компилятора Scala)? Если да, то isType также гарантированно истинно.
- Определяющие классы
- SymbolApi
def isOverloadedMethod: Boolean
Используется для предоставления более информативного сообщения об ошибке для asMethod.
- Атрибуты
- protected
- Определяющие классы
- SymbolApi
def isTerm: Boolean
Представляет ли этот символ определение термина? Обратите внимание, что каждый символ является либо термином, либо типом. Таким образом, для каждого символа sym (за исключением NoSymbol), либо sym.isTerm является истинным, либо sym.isType является истинным.
- Определяющие классы
- SymbolApi
final def isType: Boolean
Представляет ли этот символ определение типа? Обратите внимание, что каждый символ является либо термином, либо типом. Таким образом, для каждого символа sym (за исключением NoSymbol), либо sym.isTerm является истинным, либо sym.isType является истинным.
- Определяющие классы
- TypeSymbolApi → 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$TypeSymbolApi.html
API типов символов. Основной источник информации о символах — страница Symbols.
Класс Symbol определяет
isXXXтестовые методы, такие какisPublicилиisFinal,paramsиreturnTypeметоды для символов методов,baseClassesдля символов классов и так далее. Некоторые из этих методов не имеют смысла для определённых подклассовSymbolи возвращаютNoSymbol,Nilили другие пустые значения.