Трейт scala.reflect.api.Symbols.ClassSymbolApi
Трейт ClassSymbolApi extends Universe.TypeSymbolApi
Члены типов
final тип NameType = Universe.TypeName
Символы типов имеют свои имена типа TypeName.
- Определяющие классы
- TypeSymbolApi → SymbolApi
Абстрактные члены значений
abstract def alternatives: List[Universe.Symbol]
Перегруженные альтернативы этого символа.
- Definition Classes
- SymbolApi
abstract def annotations: List[Universe.Annotation]
Список аннотаций, прикреплённых к этому символу.
- Definition Classes
- SymbolApi
abstract def baseClasses: List[Universe.Symbol]
abstract def companion: Universe.Symbol
Для класса: его компаньон-объект, если он существует. Для модуля или класса модуля: компаньон-класс модуля, если он существует. Для пакета или класса пакета: NoSymbol. Для всех остальных: NoSymbol.
- Definition Classes
- SymbolApi
abstract def filter(cond: (Universe.Symbol) => Boolean): Universe.Symbol
Фильтрует базовые альтернативы (или список из одного элемента, состоящий из самого символа, если символ не перегружен). Возвращает перегруженный символ, если есть несколько совпадений. Возвращает NoSymbol, если совпадений нет.
- Definition Classes
- SymbolApi
abstract def fullName: String
Закодированное полное имя пути этого символа, где внешние и внутренние имена разделены точками.
- Definition Classes
- SymbolApi
abstract def info: Universe.Type
Подпись типа этого символа.
Этот метод всегда возвращает подписи максимально обобщенным способом, даже если базовый символ получен из экземпляра обобщенного типа. Например, подпись метода def map[B](f: (A) => B): List[B], который ссылается на параметр типа A объявляющего класса List[A], всегда будет содержать A, независимо от того, загружается ли map из List[_] или из List[Int]. Чтобы получить подпись с правильно инстанцированными параметрами типа, следует использовать infoIn.
- Definition Classes
- SymbolApi
abstract def infoIn(site: Universe.Type): Universe.Type
Подпись типа этого символа, рассматриваемого как член данного типа site.
- Definition Classes
- SymbolApi
abstract def isAbstract: Boolean
Является ли этот символ абстрактным (т. е. абстрактный класс, абстрактный метод, значение или член типа)?
- Definition Classes
- SymbolApi
abstract def isAbstractOverride: Boolean
Отмечен ли этот символ как "абстрактный переопределение"?
- Definition Classes
- SymbolApi
abstract def isAliasType: Boolean
Представляет ли этот символ определение псевдонима типа?
- Definition Classes
- TypeSymbolApi
abstract def isCaseClass: Boolean
abstract def isConstructor: Boolean
Представляет ли этот метод конструктор?
Если owner является классом, то это стандартный конструктор JVM. Если owner является трайтом, то это конструктор миксина.
- Definition Classes
- SymbolApi
abstract def isContravariant: Boolean
Является ли параметр типа, представленный этим символом, контравариантным?
- Definition Classes
- TypeSymbolApi
abstract def isCovariant: Boolean
Является ли параметр типа, представленный этим символом, ковариантным?
- Definition Classes
- TypeSymbolApi
abstract def isDerivedValueClass: Boolean
abstract def isExistential: Boolean
Представляет ли этот символ связанный экзистенциально тип?
- Definition Classes
- TypeSymbolApi
abstract def isFinal: Boolean
Является ли этот символ final?
- Definition Classes
- SymbolApi
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 enum или значение java enum?
- Definition Classes
- SymbolApi
abstract def isMacro: Boolean
Является ли этот символ макросом?
- Definition Classes
- SymbolApi
abstract def isNumeric: 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 isParameter: Boolean
Является ли этот символ параметром (параметром метода или параметром типа)?
- Definition Classes
- SymbolApi
abstract def isPrimitive: Boolean
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 isSealed: Boolean
abstract def isSpecialized: Boolean
Является ли этот символ специализированным параметром типа или сгенерированным специализированным членом?
- Классы-определения
- SymbolApi
абстрактный def isStatic: Boolean
Является ли этот символ статическим (т.е. без внешнего экземпляра)? В.: Когда именно символ помечается как STATIC? Отв.: Если это член верхнего уровня объекта, или объекта, содержащегося в объекте верхнего уровня, или любого количества уровней вглубь. http://groups.google.com/group/scala-internals/browse_thread/thread/d385bcd60b08faf6
- Классы-определения
- SymbolApi
абстрактный def isSynthetic: Boolean
Представляет ли этот символ синтетическое (т.е. сгенерированное компилятором) сущность? Примеры синтетических сущностей - это аксессоры для vals и vars.
- Классы-определения
- SymbolApi
абстрактный def isTrait: Boolean
абстрактный def knownDirectSubclasses: Set[Universe.Symbol]
Если это запечатанный класс, его известные непосредственные подклассы. В противном случае - пустой набор.
абстрактный def map(f: (Universe.Symbol) => Universe.Symbol): Universe.Symbol
Если это NoSymbol, возвращает NoSymbol, в противном случае возвращает результат применения f к этому символу.
- Классы-определения
- SymbolApi
абстрактный def module: Universe.Symbol
абстрактный def name: ClassSymbol.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 primaryConstructor: Universe.Symbol
Для класса или модульного класса Scala - первичный конструктор класса. Для тракта Scala - его конструктор миксинов. Для класса пакета Scala - NoSymbol. Для Java-класса - NoSymbol.
Известные проблемы: из-за scala/bug#8367, primaryConstructor может возвращать неожиданные результаты, когда вызывается для Java-классов (для некоторого смутного определения "Java-класса", который, по-видимому, включает не только сгенерированные javac classfiles, но также и классы, определенные в программах Scala в пакете java.lang). Что еще хуже, для некоторых Java-классов мы не можем даже гарантировать стабильность возвращаемого значения - в зависимости от вашей конфигурации загрузчика классов и/или версии JDK, вы можете получить разные primaryConstructor для одного и того же ClassSymbol. Эти проблемы зарегистрированы в scala/bug#8193.
абстрактный 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 selfType: Universe.Type
абстрактный def suchThat(cond: (Universe.Symbol) => Boolean): Universe.Symbol
Выполняет то же, что и filter, но аварийно завершается, если совпадений несколько.
- Определяющие классы
- SymbolApi
абстрактный def superPrefix(supertpe: Universe.Type): Universe.Type
абстрактный def thisPrefix: Universe.Type
абстрактный def toType: Universe.Type
Ссылка на тип, ссылающаяся на этот символ типа. Обратите внимание, если символ является членом класса, почти всегда интересует asTypeIn с типом сайта вместо него.
Пример: Дано объявление класса class C[T] { ... } , которое генерирует символ C. Тогда C.toType — это тип C[T].
В противоположность этому, C.info будет подписью типа в формате PolyType(ClassInfoType(...)), описывающей параметры типов, параметры значений, родительские типы и члены C.
- Определяющие классы
- TypeSymbolApi
абстрактный def toTypeConstructor: Universe.Type
Конструктор типа, соответствующий этому символу типа. Это отличается от toType тем, что параметры типа являются частью результатов toType, но не toTypeConstructor.
Пример: Дано объявление класса class C[T] { ... } , которое генерирует символ C. Тогда C.toType — это тип C[T], но C.toTypeConstructor — C.
- Определяющие классы
- TypeSymbolApi
абстрактный def toTypeIn(site: Universe.Type): Universe.Type
Ссылка на тип, ссылающаяся на этот символ типа, рассматриваемый как член данного типа site.
- Определяющие классы
- TypeSymbolApi
абстрактный def typeParams: List[Universe.Symbol]
Для полиморфного класса/тракта — его параметры типа, пустой список для всех других классов/тракта.
- Определяющие классы
- ClassSymbolApi → TypeSymbolApi
абстрактный def typeSignature: Universe.Type
абстрактный def typeSignatureIn(site: Universe.Type): Universe.Type
абстрактный def allOverriddenSymbols: List[Universe.Symbol]
абстрактный def associatedFile: AbstractFile
Файл исходного кода, если этот символ был создан во время этой компиляции, или файл класса, если этот символ загружен из *.class или *.jar.
Возвращаемый тип — scala.reflect.io.AbstractFile, который относится к экспериментальной части Scala reflection. Не следует использовать, если вы не знаете, что делаете. В последующих версиях этот API будет доработан и представлен как часть scala.reflect.api.
- Определяющие классы
- SymbolApi
- Аннотации
- @deprecated
- Устарело
(Начиная с версии 2.11.0) используйте
pos.source.fileвместо этого
абстрактный def companionSymbol: Universe.Symbol
Для класса: модуль или фабрика case-класса с тем же именем в том же пакете. Для модуля: класс с тем же именем в том же пакете. Для всех остальных: NoSymbol.
Этот API может возвращать неожиданные результаты для модульных классов, пакетов и пакетированных классов. Используйте companion вместо этого, чтобы получить предсказуемые результаты.
- Определяющие классы
- SymbolApi
- Аннотации
- @deprecated
- Устарело
(Начиная с версии 2.11.0) используйте
companionвместо этого, но будьте осторожны с возможными изменениями в поведении
абстрактный def isAbstractClass: Boolean
Представляет ли этот символ абстрактный класс?
- Аннотации
- @deprecated
- Устарело
(Начиная с версии 2.11.0) используйте isAbstract вместо
абстрактный def isAbstractType: Boolean
Представляет ли этот символ определение абстрактного типа?
- Определяющие классы
- TypeSymbolApi
- Аннотации
- @deprecated
- Устарело
(Начиная с версии 2.11.0) используйте isAbstract вместо
Члены-значения конкретных типов
final def !=(arg0: Any): Boolean
- Определяющие классы
- AnyRef → Any
final def ##(): Int
- Определяющие классы
- AnyRef → Any
def +(other: String): String
- Неявный
- Этот член добавлен благодаря неявной конверсии из Universe.ClassSymbolApi вany2stringadd[Universe.ClassSymbolApi] выполняемой методом any2stringadd в scala.Predef.
- Определяющие классы
- any2stringadd
def ->[B](y: B): (Universe.ClassSymbolApi, B)
- Неявный
- Этот член добавлен благодаря неявной конверсии из Universe.ClassSymbolApi вArrowAssoc[Universe.ClassSymbolApi] выполняемой методом ArrowAssoc в scala.Predef.
- Определяющие классы
- ArrowAssoc
- Аннотации
- @inline()
final def ==(arg0: Any): Boolean
- Определяющие классы
- AnyRef → Any
final def asClass: Universe.ClassSymbol
Этот символ преобразуется в ClassSymbol, представляющий класс или трайт.
- Определяющие классы
- ClassSymbolApi → 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.ClassSymbolApi) => Boolean, msg: => Any): Universe.ClassSymbolApi
- Неявный
- Этот член добавлен благодаря неявной конверсии из Universe.ClassSymbolApi вEnsuring[Universe.ClassSymbolApi] выполняемой методом Ensuring в scala.Predef.
- Определяющие классы
- Ensuring
def ensuring(cond: (Universe.ClassSymbolApi) => Boolean): Universe.ClassSymbolApi
- Неявный
- Этот член добавляется неявным преобразованием из Universe.ClassSymbolApi вEnsuring[Universe.ClassSymbolApi] с помощью метода Ensuring в scala.Predef.
- Определяющие классы
- Ensuring
def ensuring(cond: Boolean, msg: => Any): Universe.ClassSymbolApi
- Неявный
- Этот член добавляется неявным преобразованием из Universe.ClassSymbolApi вEnsuring[Universe.ClassSymbolApi] с помощью метода Ensuring в scala.Predef.
- Определяющие классы
- Ensuring
def ensuring(cond: Boolean): Universe.ClassSymbolApi
- Неявный
- Этот член добавляется неявным преобразованием из Universe.ClassSymbolApi вEnsuring[Universe.ClassSymbolApi] с помощью метода 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.ClassSymbolApi вStringFormat[Universe.ClassSymbolApi] с помощью метода StringFormat в scala.Predef.
- Определяющие классы
- StringFormat
- Аннотации
- @inline()
final def getClass(): Class[_ <: AnyRef]
- Определяющие классы
- AnyRef → Any
- Аннотации
- @native()
def hashCode(): Int
- Определяющие классы
- AnyRef → Any
- Аннотации
- @native()
final def isClass: Boolean
Представляет ли этот символ определение класса или трейта? Если да, то isType также гарантированно будет истинным.
- Определяющие классы
- ClassSymbolApi → 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$ClassSymbolApi.html
API символов классов. Основным источником информации о символах является страница Symbols.
Класс Symbol определяет
isXXXтестовые методы, такие какisPublicилиisFinal,paramsиreturnTypeметоды для символов методов,baseClassesдля символов классов и так далее. Некоторые из этих методов не имеют смысла для определённых подклассовSymbolи возвращаютNoSymbol,Nilили другие пустые значения.