Аннотация scala.reflect.api.Symbols.ClassSymbol
abstract type ClassSymbol >: Null <: Universe.ClassSymbolApi with Universe.TypeSymbol
Типы членов
final type NameType = Universe.TypeName
Символы типов имеют свои имена типа TypeName.
- Definition Classes
- TypeSymbolApi → SymbolApi
Абстрактные члены-значения
абстрактный def alternatives: List[Universe.Symbol]
Перегруженные альтернативы данного символа.
- Определяющие классы
- SymbolApi
абстрактный def annotations: List[Universe.Annotation]
Список аннотаций, присоединённых к этому символу.
- Определяющие классы
- SymbolApi
абстрактный def baseClasses: List[Universe.Symbol]
Список всех базовых классов этого типа (включая его собственный typeSymbol) в порядке линеаризации, начиная с самого класса и заканчивая классом Any.
- Определяющие классы
- ClassSymbolApi
абстрактный def companion: Universe.Symbol
Для класса: его компаньон-объект, если он существует. Для модуля или класса модуля: компаньон-класс модуля, если он существует. Для пакета или класса пакета: NoSymbol. Для всех остальных: NoSymbol.
- Определяющие классы
- SymbolApi
абстрактный def filter(cond: (Universe.Symbol) => Boolean): Universe.Symbol
Фильтрует базовые альтернативы (или список из одного элемента, состоящий из самого символа, если символ не перегружен). Возвращает перегруженный символ, если совпадений несколько. Возвращает NoSymbol, если совпадений нет.
- Определяющие классы
- SymbolApi
абстрактный def fullName: String
Кодированное полное имя пути этого символа, где внешние и внутренние имена разделены точками.
- Определяющие классы
- SymbolApi
абстрактный 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 isAliasType: Boolean
Представляет ли этот символ определение псевдонима типа?
- Определяющие классы
- TypeSymbolApi
абстрактный def isCaseClass: Boolean
Представляет ли этот символ определение case-класса?
- Определяющие классы
- ClassSymbolApi
абстрактный def isConstructor: Boolean
Представляет ли этот метод конструктор?
Если owner является классом, то это конструктор JVM. Если owner является траитом, то это миксин-конструктор.
- Определяющие классы
- SymbolApi
абстрактный def isContravariant: Boolean
Является ли параметр типа, представленный этим символом, контравариантным?
- Определяющие классы
- TypeSymbolApi
абстрактный def isCovariant: Boolean
Является ли параметр типа, представленный этим символом, контравариантным?
- Классы-определения
- TypeSymbolApi
абстрактный def isDerivedValueClass: Boolean
Представляет ли этот символ определение пользовательского класса значений? Иными словами, является ли AnyVal среди его родительских классов?
- Классы-определения
- ClassSymbolApi
абстрактный def isExistential: Boolean
Представляет ли этот символ существенно связанного типа?
- Классы-определения
- TypeSymbolApi
абстрактный def isFinal: Boolean
Является ли этот символ финальным?
- Классы-определения
- SymbolApi
абстрактный 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 isMacro: Boolean
Является ли этот символ макросом?
- Классы-определения
- SymbolApi
абстрактный def isNumeric: Boolean
Представляет ли этот символ определение числового класса значений? Иными словами, является ли он одним из scala.Double, scala.Float, scala.Long, scala.Int, scala.Char, scala.Short, scala.Byte, scala.Unit или scala.Boolean?
- Классы-определения
- ClassSymbolApi
абстрактный def isPackage: Boolean
Представляет ли этот символ определение пакета? Известные проблемы: https://github.com/scala/bug/issues/6732.
- Классы-определения
- SymbolApi
абстрактный def isPackageClass: Boolean
Представляет ли этот символ класс пакета? Если да, то isClass также гарантированно будет истинным.
- Классы-определения
- SymbolApi
абстрактный def isParameter: Boolean
Является ли этот символ параметром (параметром метода или параметром типа)?
- Классы-определения
- SymbolApi
абстрактный def isPrimitive: Boolean
Представляет ли этот символ определение примитивного класса? Иными словами, является ли он одним из scala.Double, scala.Float, scala.Long, scala.Int, scala.Char, scala.Short, scala.Byte, scala.Unit или scala.Boolean?
- Классы-определения
- ClassSymbolApi
абстрактный 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 isSealed: Boolean
Представляет ли этот символ запечатанный класс?
- Definition Classes
- ClassSymbolApi
abstract def isSpecialized: Boolean
Является ли этот символ специализированным параметром типа или сгенерированным специализированным членом?
- Definition Classes
- SymbolApi
abstract def isStatic: Boolean
Является ли этот символ статическим (т.е. без внешнего экземпляра)? В: Когда именно sym отмечается как STATIC? Oтвет: Если это член верхнего уровня объекта, или объекта, содержащегося в объекте верхнего уровня, или на любой глубине вложенности. 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 isTrait: Boolean
Представляет ли этот символ трайт?
- Definition Classes
- ClassSymbolApi
abstract def knownDirectSubclasses: Set[Universe.Symbol]
Если это запечатанный класс, его известные непосредственные подклассы. В противном случае — пустое множество.
- Definition Classes
- ClassSymbolApi
abstract def map(f: (Universe.Symbol) => Universe.Symbol): Universe.Symbol
Если это NoSymbol, возвращает NoSymbol, иначе возвращает результат применения f к этому символу.
- Definition Classes
- SymbolApi
abstract def module: Universe.Symbol
Модуль, соответствующий этому классу модуля, или NoSymbol, если этот символ не является классом модуля.
- Definition Classes
- ClassSymbolApi
abstract def name: Symbol.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 primaryConstructor: Universe.Symbol
Для класса или модульного класса Scala — первичный конструктор класса. Для Scala-трейта — конструктор миксина. Для Scala-пакета — NoSymbol. Для Java-класса — NoSymbol.
Известные проблемы: В связи с проблемой scala/bug#8367, primaryConstructor может возвращать неожиданные результаты, когда вызывается для Java-классов (для некоторого расплывчатого определения «Java-класса», которое, по-видимому, включает не только сгенерированные javac файлы классов, но и классы, определённые в программах Scala в пакете java.lang). Что ещё хуже, для некоторых Java-классов мы не можем гарантировать стабильность возвращаемого значения — в зависимости от конфигурации загрузчика классов и/или версии JDK вы можете получить различные primaryConstructor для одного и того же ClassSymbol. Эти проблемы зарегистрированы в scala/bug#8193.
- Definition Classes
- ClassSymbolApi
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 selfType: Universe.Type
Если этот символ — класс или трейт, его тип self, в противном случае — тип самого символа.
- Definition Classes
- ClassSymbolApi
abstract def suchThat(cond: (Universe.Symbol) => Boolean): Universe.Symbol
Делает то же, что и filter, но завершается ошибкой, если совпадений несколько.
- Definition Classes
- SymbolApi
abstract def superPrefix(supertpe: Universe.Type): Universe.Type
Тип C.super[M], где C — текущий класс, а M — supertpe.
- Definition Classes
- ClassSymbolApi
abstract def thisPrefix: Universe.Type
Тип C.this, где C — текущий класс.
- Definition Classes
- ClassSymbolApi
abstract def toType: Universe.Type
Ссылка на тип, которая ссылается на этот тип символа. Обратите внимание, что если символ является членом класса, то почти всегда требуется asTypeIn с типом сайта вместо него.
Пример: Дано определение класса class C[T] { ... } , которое генерирует символ C. Тогда C.toType — это тип C[T].
В противоположность этому, C.info будет подписью типа вида PolyType(ClassInfoType(...)), которая описывает параметры типа, параметры значения, родительские типы и члены C.
- Definition Classes
- TypeSymbolApi
abstract def toTypeConstructor: Universe.Type
Конструктор типа, соответствующий этому типу символа. Это отличается от toType тем, что параметры типа являются частью результатов toType, но не toTypeConstructor.
Пример: Дано определение класса class C[T] { ... } , которое генерирует символ C. Тогда C.toType — это тип C[T], но C.toTypeConstructor — C.
- Definition Classes
- TypeSymbolApi
abstract def toTypeIn(site: Universe.Type): Universe.Type
Ссылка на тип, которая ссылается на этот тип символа, рассматриваемый как член данного типа site.
- Definition Classes
- TypeSymbolApi
абстрактный def typeParams: Список[СимволUniverse]
Для полиморфного класса/тракта, его параметры типа, пустой список для всех других классов/тракта.
- Определяющие классы
- ClassSymbolApi → TypeSymbolApi
абстрактный def typeSignature: ТипUniverse
абстрактный def typeSignatureIn(site: ТипUniverse): ТипUniverse
абстрактный def allOverriddenSymbols: Список[СимволUniverse]
абстрактный def associatedFile: ФайлAbstract
Файл исходного кода, если этот символ создан во время этого выполнения компиляции, или файл класса, если этот символ загружен из файла *.class или *.jar.
Возвращаемый тип — scala.reflect.io.AbstractFile, который принадлежит экспериментальной части Scala reflection. Его не следует использовать, если вы не знаете, что делаете. В последующих версиях этот API будет доработан и представлен как часть scala.reflect.api.
- Определяющие классы
- SymbolApi
- Аннотации
- @deprecated
- Устарело
(С версии 2.11.0) используйте
pos.source.fileвместо
абстрактный def companionSymbol: СимволUniverse
Для класса: модуль или фабрика case class с тем же именем в том же пакете. Для модуля: класс с тем же именем в том же пакете. Для всех других: NoSymbol.
Этот API может возвращать неожиданные результаты для модульных классов, пакетов и пакетов классов. Используйте companion вместо, чтобы получить предсказуемые результаты.
- Определяющие классы
- SymbolApi
- Аннотации
- @deprecated
- Устарело
(С версии 2.11.0) используйте
companionвместо, но будьте внимательны к возможным изменениям в поведении
абстрактный def isAbstractClass: Булево
Является ли этот символ абстрактным классом?
- Определяющие классы
- ClassSymbolApi
- Аннотации
- @deprecated
- Устарело
(С версии 2.11.0) используйте isAbstract вместо
абстрактный def isAbstractType: Булево
Является ли этот символ определением абстрактного типа?
- Определяющие классы
- TypeSymbolApi
- Аннотации
- @deprecated
- Устарело
(С версии 2.11.0) используйте isAbstract вместо
Члены-значения
final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
final def ##(): Int
- Definition Classes
- AnyRef → Any
final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
final def asClass: Universe.ClassSymbol
Этот символ преобразуется в ClassSymbol, представляющий класс или трайт.
- Definition Classes
- ClassSymbolApi → SymbolApi
- Исключения
ScalaReflectionException, еслиisClassложно.
final def asInstanceOf[T0]: T0
- Definition Classes
- Any
def asMethod: Universe.MethodSymbol
Этот символ преобразуется в MethodSymbol.
- Definition Classes
- SymbolApi
- Исключения
ScalaReflectionException, еслиisMethodложно.
def asModule: Universe.ModuleSymbol
Этот символ преобразуется в ModuleSymbol, определённый объектом.
- Definition Classes
- SymbolApi
- Исключения
ScalaReflectionException, еслиisModuleложно.
def asTerm: Universe.TermSymbol
Этот символ преобразуется в TermSymbol.
- Definition Classes
- SymbolApi
- Исключения
ScalaReflectionException, еслиisTermложно.
final def asType: Universe.TypeSymbol
Этот символ преобразуется в TypeSymbol.
- Definition Classes
- TypeSymbolApi → SymbolApi
- Исключения
ScalaReflectionException, еслиisTypeложно.
def clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
def finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
final def isClass: Boolean
Представляет ли этот символ определение класса или трайта? Если да, то и isType гарантированно верно.
- Definition Classes
- ClassSymbolApi → SymbolApi
final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
def isMethod: Boolean
Представляет ли этот символ определение метода? Если да, то также гарантируется, что isTerm верно.
- Definition Classes
- SymbolApi
def isModule: Boolean
Представляет ли этот символ определение модуля (т.е. получен из определения объекта)? Если да, то также гарантируется, что isTerm верно.
- Definition Classes
- SymbolApi
def isModuleClass: Boolean
Представляет ли этот символ определение класса, неявно связанного с определением объекта (класс-модуль в терминах компилятора Scala)? Если да, то также гарантируется, что isType верно.
- Definition Classes
- SymbolApi
def isOverloadedMethod: Boolean
Используется для предоставления более информативного сообщения об ошибке для asMethod.
- Attributes
- protected
- Definition Classes
- SymbolApi
def isTerm: Boolean
Представляет ли этот символ определение термина? Обратите внимание, что каждый символ является либо термином, либо типом. Таким образом, для каждого символа sym (за исключением NoSymbol), либо sym.isTerm верно, либо sym.isType верно.
- Definition Classes
- SymbolApi
final def isType: Boolean
Представляет ли этот символ определение типа? Обратите внимание, что каждый символ является либо термином, либо типом. Таким образом, для каждого символа sym (за исключением NoSymbol), либо sym.isTerm верно, либо sym.isType верно.
- Definition Classes
- TypeSymbolApi → SymbolApi
final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
def toString(): String
- Definition Classes
- AnyRef → Any
final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @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$ClassSymbol.html
Тип символов классов, представляющих определения классов и трейтов.