Spec-Zone.ru › Scala 2.13 Library

Класс scala.AnyVal

абстрактный класс AnyVal extends Any

AnyVal является базовым классом всех типов значений, описывающих значения, не реализованные как объекты в основной системе. Типы значений определяются в спецификации языка Scala, раздел 12.2.

Стандартная реализация включает девять AnyVal подтипов:

scala.Double, scala.Float, scala.Long, scala.Int, scala.Char, scala.Short и scala.Byte являются числовыми типами значений.

scala.Unit и scala.Boolean являются нечисловыми типами значений.

Другие группы:

  • Типы поддиапазонов — scala.Byte, scala.Short и scala.Char.
  • Целочисленные типы включают типы поддиапазонов, а также scala.Int и scala.Long.
  • Типы с плавающей точкой — scala.Float и scala.Double.

До Scala 2.10, AnyVal был запечатанным трактом. Однако начиная со Scala 2.10, возможно определить подкласс AnyVal под названием пользовательский тип значения, который обрабатывается компилятором особым образом. Правильно определенные пользовательские типы значений предоставляют способ повышения производительности для пользовательских типов, избегая выделения памяти для объекта во время выполнения и заменяя вызовы виртуальных методов вызовами статических методов.

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

  • должны иметь один val параметр, который является базовым представлением во время выполнения.
  • могут определять def, но не val, var или вложенные traits , class или object.
  • обычно не наследуются от других трактов, кроме AnyVal.
  • не могут использоваться в тестах типов или сопоставлении шаблонов.
  • не могут переопределять методы equals или hashCode.

Минимальный пример:

class Wrapper(val underlying: Int) extends AnyVal {
  def foo: Wrapper = new Wrapper(underlying * 19)
}

Важно отметить, что пользовательские типы значений ограничены, и в некоторых случаях все равно должны выделять экземпляр пользовательского типа значения во время выполнения. Эти ограничения и обстоятельства подробно описаны в Value Classes and Universal Traits.

Источник
AnyVal.scala
Линейные супертипы
Any
Известные подклассы
UnapplySeqWrapper, Boolean, Byte, Char, Double, Float, UnliftOps, Int, Long, ElementWiseExtractor, ArrowAssoc, Ensuring, StringFormat, Short, Unit, ValueOf, ArrayOps, IterableOnceExtensionMethods, SizeCompareOps, UnapplySeqWrapper, Shape, StringOps, Deferrer, Partial, Deferrer, UnwrapOp, DoubleMult, DurationDouble, DurationInt, DurationLong, IntMult, LongMult, JavaDurationOps, ScalaDurationOps, RichBiConsumerAsFunction2, RichBiFunctionAsFunction2, RichBiPredicateAsFunction2, RichBinaryOperatorAsFunction2, RichBooleanSupplierAsFunction0, RichConsumerAsFunction1, RichDoubleBinaryOperatorAsFunction2, RichDoubleConsumerAsFunction1, RichDoubleFunctionAsFunction1, RichDoublePredicateAsFunction1, RichDoubleSupplierAsFunction0, RichDoubleToIntFunctionAsFunction1, RichDoubleToLongFunctionAsFunction1, RichDoubleUnaryOperatorAsFunction1, RichFunction0AsBooleanSupplier, RichFunction0AsDoubleSupplier, RichFunction0AsIntSupplier, RichFunction0AsLongSupplier, RichFunction0AsSupplier, RichFunction1AsConsumer, RichFunction1AsDoubleConsumer, RichFunction1AsDoubleFunction, RichFunction1AsDoublePredicate, RichFunction1AsDoubleToIntFunction, RichFunction1AsDoubleToLongFunction, RichFunction1AsDoubleUnaryOperator, RichFunction1AsFunction, RichFunction1AsIntConsumer, RichFunction1AsIntFunction,
RichFunction1AsIntPredicate, RichFunction1AsIntToDoubleFunction, RichFunction1AsIntToLongFunction, RichFunction1AsIntUnaryOperator, RichFunction1AsLongConsumer, RichFunction1AsLongFunction, RichFunction1AsLongPredicate, RichFunction1AsLongToDoubleFunction, RichFunction1AsLongToIntFunction, RichFunction1AsLongUnaryOperator, RichFunction1AsPredicate, RichFunction1AsToDoubleFunction, RichFunction1AsToIntFunction, RichFunction1AsToLongFunction, RichFunction1AsUnaryOperator, RichFunction2AsBiConsumer, RichFunction2AsBiFunction, RichFunction2AsBiPredicate, RichFunction2AsBinaryOperator, RichFunction2AsDoubleBinaryOperator, RichFunction2AsIntBinaryOperator, RichFunction2AsLongBinaryOperator, RichFunction2AsObjDoubleConsumer, RichFunction2AsObjIntConsumer, RichFunction2AsObjLongConsumer, RichFunction2AsToDoubleBiFunction, RichFunction2AsToIntBiFunction, RichFunction2AsToLongBiFunction, RichFunctionAsFunction1, RichIntBinaryOperatorAsFunction2, RichIntConsumerAsFunction1, RichIntFunctionAsFunction1, RichIntPredicateAsFunction1, RichIntSupplierAsFunction0, RichIntToDoubleFunctionAsFunction1, RichIntToLongFunctionAsFunction1, RichIntUnaryOperatorAsFunction1, RichLongBinaryOperatorAsFunction2, RichLongConsumerAsFunction1, RichLongFunctionAsFunction1, RichLongPredicateAsFunction1, RichLongSupplierAsFunction0, RichLongToDoubleFunctionAsFunction1, RichLongToIntFunctionAsFunction1, RichLongUnaryOperatorAsFunction1, RichObjDoubleConsumerAsFunction2, RichObjIntConsumerAsFunction2, RichObjLongConsumerAsFunction2,
RichPredicateAsFunction1, RichSupplierAsFunction0, RichToDoubleBiFunctionAsFunction2, RichToDoubleFunctionAsFunction1, RichToIntBiFunctionAsFunction2, RichToIntFunctionAsFunction1, RichToLongBiFunctionAsFunction2, RichToLongFunctionAsFunction1, RichUnaryOperatorAsFunction1, CompletionStageOps, FutureOps, RichOption, RichOptional, RichOptionalDouble, RichOptionalInt, RichOptionalLong, ChainingOps, MergeableEither, any2stringadd, SearchImpl

Конструкторы экземпляров

new AnyVal()

Члены значений

final def !=(arg0: Any): Boolean

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

возвращает

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

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

final def ##(): Int

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

возвращает

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

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

def +(other: String): String

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

def ->[B](y: B): (AnyVal, B)

Неявное
Этот член добавляется неявным преобразованием из AnyVal вArrowAssoc[AnyVal] выполненное методом 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 в противном случае.

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

final def asInstanceOf[T0]: T0

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

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

возвращает

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

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

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

def ensuring(cond: (AnyVal) => Boolean, msg: => Any): AnyVal

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

def ensuring(cond: (AnyVal) => Boolean): AnyVal

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

def ensuring(cond: Boolean, msg: => Any): AnyVal

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

def ensuring(cond: Boolean): AnyVal

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

def equals(arg0: Any): Boolean

Сравнивает объект-получатель (this) с объектом-аргументом (that) на эквивалентность.

Любая реализация этого метода должна быть отношением эквивалентности:

    Он рефлексивен: для любого экземпляра x типа Any, x.equals(x) должен возвращать true.Он симметричен: для любых экземпляров x и y типа Any, x.equals(y) должен возвращать true тогда и только тогда, когда y.equals(x) возвращает true.Он транзитивен: для любых экземпляров x, y, и z типа Any если x.equals(y) возвращает true и y.equals(z) возвращает true, то x.equals(z) должен возвращать true.

Если вы переопределяете этот метод, вы должны проверить, что ваша реализация остаётся отношением эквивалентности. Кроме того, при переопределении этого метода обычно необходимо переопределить hashCode, чтобы гарантировать, что объекты, которые «равны» (o1.equals(o2) возвращает true ), хешируются до одного и того же значения scala.Int. (o1.hashCode.equals(o2.hashCode)).

возвращает

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

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

def formatted(fmtstr: String): String

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

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

def getClass(): Class[_ <: AnyVal]

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

возвращает

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

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

def hashCode(): Int

Вычисляет значение кода хэша объекта.

Стандартный алгоритм хэширования зависит от платформы.

Важно отметить, что для двух объектов могут совпадать коды хэша (o1.hashCode.equals(o2.hashCode)) но при этом они могут не быть равны (o1.equals(o2) возвращает false). Вырожденная реализация может всегда возвращать 0. Однако требуется, чтобы если два объекта равны (o1.equals(o2) возвращает true ), у них были идентичные коды хэша (o1.hashCode.equals(o2.hashCode)). Поэтому при переопределении этого метода необходимо убедиться, что поведение согласуется с методом equals .

возвращает

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

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

final def isInstanceOf[T0]: Boolean

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

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

возвращает

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

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

def toString(): String

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

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

возвращает

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

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

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

Spec-Zone.ru

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