Spec-Zone.ru › Scala 2.13 Library

Трейт scala.reflect.ClassTag

Компаньон объект ClassTag

Трейт ClassTag[T] extends ClassManifestDeprecatedApis[T] with Equals with Serializable

A ClassTag[T] хранит стёртый класс заданного типа T, доступный через поле runtimeClass. Это особенно полезно для создания экземпляров Array с типами элементов, неизвестными на этапе компиляции.

ClassTag являются более слабым частным случаем scala.reflect.api.TypeTags#TypeTagов, так как они оборачивают только класс в момент выполнения заданного типа, в то время как TypeTag содержит всю статическую информацию о типе. То есть, ClassTag создаются, зная только верхний уровень класса типа, без необходимости знать все его аргументы типов. Эта информация о времени выполнения достаточна для создания экземпляров Array в момент выполнения.

Например:

scala> def mkArray[T : ClassTag](elems: T*) = Array[T](elems: _*)
mkArray: [T](elems: T*)(implicit evidence$1: scala.reflect.ClassTag[T])Array[T]

scala> mkArray(42, 13)
res0: Array[Int] = Array(42, 13)

scala> mkArray("Japan","Brazil","Germany")
res1: Array[String] = Array(Japan, Brazil, Germany)

См. scala.reflect.api.TypeTags для дополнительных примеров, или Руководство по рефлексии: TypeTags для более подробной информации.

Аннотации
@implicitNotFound("Нет ClassTag для ${T}")
Исходный код
ClassTag.scala
Линейные супертипы
Equals, ClassManifestDeprecatedApis[T], OptManifest[T], java.io.Serializable, AnyRef, Any
Известные подклассы
AnyValManifest, Manifest

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

абстрактный def runtimeClass: Class[_]

Класс, представляющий тип U, к которому был бы стёрт тип T. Обратите внимание, что нет отношения подтипов между T и U.

Члены конкретных значений

final def !=(arg0: Any): Boolean

Проверка двух объектов на неравенство.

возвращает

true если !(this == that), в противном случае false.

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

final def ##(): Int

Эквивалентно x.hashCode за исключением упакованных числовых типов и null. Для числовых типов возвращает значение хеша, которое соответствует равенству значений: если два экземпляра типа значения сравниваются как true, то ## вернет одинаковое значение хеша для каждого из них. Для null возвращает хешкод, где null.hashCode вызывает NullPointerException.

возвращает

значение хеша, согласованное с ==

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

def +(other: String): String

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

def ->[B](y: B): (ClassTag[T], B)

Неявный
Этот член добавлен неявным преобразованием из ClassTag[T] вArrowAssoc[ClassTag[T]] с помощью метода ArrowAssoc в scala.Predef.
Определяющие классы
ArrowAssoc
Аннотации
@inline()

final def ==(arg0: Any): Boolean

Выражение x == that эквивалентно if (x eq null) that eq null else x.equals(that).

возвращает

true если объект-получатель эквивалентен аргументу; false в противном случае.

Классы определения
AnyRef → Any

def argString: String

Атрибуты
protected
Классы определения
ClassManifestDeprecatedApis

def arrayClass[A](tp: Class[_]): Class[Array[A]]

Атрибуты
protected
Классы определения
ClassManifestDeprecatedApis

final def asInstanceOf[T0]: T0

Преобразовать объект-получатель к типу T0.

Обратите внимание, что успех преобразования во время выполнения зависит от семантики стирания Scala. Поэтому выражение 1.asInstanceOf[String] выбросит ClassCastException во время выполнения, а выражение List(1).asInstanceOf[List[String]] — нет. В последнем примере, поскольку аргумент типа стирается во время компиляции, невозможно проверить, содержатся ли элементы списка в требуемом типе.

возвращает

объект-получатель.

Классы определения
Any
Исключения

ClassCastException, если объект-получатель не является экземпляром стирания типа T0.

def canEqual(x: Any): Boolean

Метод, который следует вызывать из каждого хорошо спроектированного метода equals, открытого для переопределения в подклассе. См. Programming in Scala, Chapter 28 для обсуждения и проектирования.

возвращает

true, если этот экземпляр потенциально может быть равен that, иначе false

Классы определения
ClassTag → Equals → ClassManifestDeprecatedApis

def clone(): AnyRef

Создать копию объекта-получателя.

По умолчанию реализация метода clone зависит от платформы.

returns

копия объекта-получателя.

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

не определен SLS как член AnyRef

def ensuring(cond: (ClassTag[T]) => Boolean, msg: => Any): ClassTag[T]

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

def ensuring(cond: (ClassTag[T]) => Boolean): ClassTag[T]

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

def ensuring(cond: Boolean, msg: => Any): ClassTag[T]

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

def ensuring(cond: Boolean): ClassTag[T]

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

final def eq(arg0: AnyRef): Boolean

Проверяет, является ли аргумент (that) ссылкой на объект-получатель (this).

Метод eq реализует отношение эквивалентности отношение эквивалентности на не-null экземплярах AnyRef, и имеет три дополнительных свойства:

    Он согласован: для любых не-null экземпляров x и y типа AnyRef, многократные вызовы x.eq(y) последовательно возвращают true или последовательно возвращают false. Для любого не-null экземпляра x типа AnyRef, вызовы x.eq(null) и null.eq(x) возвращают false. null.eq(null) возвращает true.

При переопределении методов equals или hashCode важно обеспечить, чтобы их поведение соответствовало ссылочной эквивалентности. Поэтому, если два объекта являются ссылками друг на друга (o1 eq o2), они должны быть равны друг другу (o1 == o2) и должны иметь одинаковое значение хэша (o1.hashCode == o2.hashCode).

возвращает

true если аргумент является ссылкой на объект-получатель; false в противном случае.

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

def equals(x: Any): Boolean

Универсальный метод равенства, определённый в AnyRef.

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

def finalize(): Unit

Вызывается сборщиком мусора для объекта-получателя, когда больше нет ссылок на объект.

Подробности о том, когда и вызывается метод finalize, а также взаимодействии finalize с нелокальными возвратами и исключениями, зависят от платформы.

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

не определен в SLS как член AnyRef

def formatted(fmtstr: String): String

Возвращает строку, отформатированную в соответствии с заданной строкой format. Строки форматирования соответствуют String.format (@см. java.lang.String.format).

Неявный
Этот член добавляется неявным преобразованием из ClassTag[T] в StringFormat[ClassTag[T]] с помощью метода StringFormat в scala.Predef.
Определяющие классы
StringFormat
Аннотации
@inline()

final def getClass(): Class[_ <: AnyRef]

Возвращает представление класса объекта во время выполнения.

возвращает

объект класса, соответствующий типу получателя во время выполнения.

Определяющие классы
AnyRef → Any
Аннотации
@native()

def hashCode(): Int

Метод hashCode для ссылочных типов. См. hashCode в scala.Any.

возвращает

значение хэш-кода для этого объекта.

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

final def isInstanceOf[T0]: Boolean

Проверяет, является ли динамический тип объекта получателя T0.

Обратите внимание, что результат проверки модулируется семантикой стирания Scala. Следовательно, выражение 1.isInstanceOf[String] вернет false, а выражение List(1).isInstanceOf[List[String]] вернет true. В последнем примере, поскольку аргумент типа стирается во время компиляции, проверить, содержат ли элементы списка указанный тип, невозможно.

возвращает

true , если объект получателя является экземпляром стирания типа T0; false в противном случае.

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

final def ne(arg0: AnyRef): Boolean

Эквивалентно !(this eq that).

возвращает

true , если аргумент не является ссылкой на объект получателя; false в противном случае.

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

def newArray(len: Int): Array[T]

final def notify(): Unit

Разбуждает единственную нить, ожидающую монитор объекта-получателя.

Definition Classes
AnyRef
Annotations
@native()
Примечание

не указано SLS в качестве члена AnyRef

final def notifyAll(): Unit

Разбуждает все нити, ожидающие монитор объекта-получателя.

Definition Classes
AnyRef
Annotations
@native()
Примечание

не указано SLS в качестве члена AnyRef

final def synchronized[T0](arg0: => T0): T0

Definition Classes
AnyRef

def toString(): String

Создаёт строковое представление этого объекта. По умолчанию представление зависит от платформы. На платформе Java это конкатенация имени класса, «@» и хэш-кода объекта в шестнадцатеричном формате.

returns

строковое представление объекта.

Definition Classes
ClassTag → AnyRef → Any

def unapply(x: Any): Option[T]

Класс ClassTag[T] может использоваться в качестве экстрактора, который соответствует только объектам типа T.

Компилятор пытается преобразовать неконтролируемые проверки типов в совпадениях шаблонов в проверяемые, обернув шаблон типа (_: T) как ct(_: T), где ct — экземпляр ClassTag[T]. Проверки типа, необходимые перед вызовом других экстракторов, обрабатываются аналогично. SomeExtractor(...) преобразуется в ct(SomeExtractor(...)) если T в SomeExtractor.unapply(x: T) не проверяется, но у нас есть экземпляр ClassTag[T].

final def wait(): Unit

Definition Classes
AnyRef
Annotations
@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()

def wrap: ClassTag[Array[T]]

© 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/ClassTag.html

Spec-Zone.ru

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