Spec-Zone.ru › Scala 2.13 Library

Класс scala.concurrent.duration.Duration

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

sealed abstract класс Duration extends Serializable with Ordered[Duration]

Утилита для работы с продолжительностями java.util.concurrent.TimeUnit.

Этот класс не предназначен для общего представления времени, он оптимизирован для потребностей scala.concurrent.

Базовое использование

Примеры:

import scala.concurrent.duration._

val duration = Duration(100, MILLISECONDS)
val duration = Duration(100, "millis")

duration.toNanos
duration < 1.second
duration <= Duration.Inf

Вызов невыразимых преобразований (например, вызов toSeconds для бесконечной продолжительности) вызовет IllegalArgumentException.

Также предоставляются неявные преобразования для Int, Long и Double. Пример использования:

import scala.concurrent.duration._

val duration = 100.millis

Предоставленный неявными преобразованиями DSL всегда позволяет создавать конечные продолжительности, даже для бесконечных входов типа Double; используйте Duration.Inf вместо этого.

Также включены экстрактные функции, парсинг и арифметические операции:

val d = Duration("1.2 µs")
val Duration(length, unit) = 5 millis
val d2 = d * 2.5
val d3 = d2 + 1.millisecond

Обработка единиц времени

Вычисления, выполняемые с конечными продолжительностями, всегда сохраняют более точную единицу из обоих операндов, независимо от того, может ли более грубая единица точно выразить ту же продолжительность. Это означает, что Duration можно использовать как безопасный контейнер для пары (длина, единица), если он создаётся соответствующими методами и над ним не выполняются арифметические операции; в этом случае сложение/вычитание продолжительностей следует производить с осторожностью.

Соответствие семантике Double

Семантика арифметических операций над Duration двусторонняя:

  • точное сложение/вычитание с наносекундным разрешением для конечных продолжительностей, независимо от величины слагаемых
  • изоморфно java.lang.Double в отношении бесконечных или неопределённых значений

Преобразование между Duration и Double выполняется с помощью Duration.toUnit (с единицей NANOSECONDS) и Duration.fromNanos(Double)

Сортировка

По умолчанию используется порядок, согласованный с порядком чисел Double, что означает, что Undefined считается больше всех других продолжительностей, включая Duration.Inf.

Источник
Duration.scala
Линейные супертипы
math.Ordered[Duration], Comparable[Duration], java.io.Serializable, AnyRef, Any
Известные подклассы
Infinite, FiniteDuration

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

abstract def *(factor: Double): Duration

Возвращает это длительность, умноженную на скалярный коэффициент. При работе с бесконечными коэффициентами семантика соответствует Double.

Исключения

IllegalArgumentException в случае конечного переполнения: диапазон конечной длительности +-(2^63-1)ns, and no conversion to infinite durations takes place.

abstract def +(other: Duration): Duration

Возвращает сумму этой длительности и переданной. При работе с бесконечными слагаемыми семантика соответствует Double.

Исключения

IllegalArgumentException в случае конечного переполнения: диапазон конечной длительности +-(2^63-1)ns, and no conversion to infinite durations takes place.

abstract def -(other: Duration): Duration

Возвращает разность этой длительности и переданной. При работе с бесконечными слагаемыми семантика соответствует Double.

Исключения

IllegalArgumentException в случае конечного переполнения: диапазон конечной длительности +-(2^63-1)ns, and no conversion to infinite durations takes place.

abstract def /(divisor: Duration): Double

Возвращает частное этой и переданной длительности как число с плавающей точкой. Семантика определяется Double, как если бы вычислялось частное длительностей в наносекундах обоих множителей.

abstract def /(divisor: Double): Duration

Возвращает эту длительность, разделенную на скалярный коэффициент. При работе с бесконечными коэффициентами семантика соответствует Double.

Исключения

IllegalArgumentException в случае конечного переполнения: диапазон конечной длительности +-(2^63-1)ns, and no conversion to infinite durations takes place.

abstract def compare(that: Duration): Int

Результат сравнения this с операндом that.

Реализуйте этот метод, чтобы определить, как будут сортироваться экземпляры A.

Возвращает x где:

    x < 0 когда this < that x == 0 когда this == that x > 0 когда this > that
Определяющие классы
Ordered

abstract def isFinite: Boolean

abstract def length: Long

Получить длительность этой длительности, измеренную в единицах, полученных методом unit.

Исключения

IllegalArgumentException при вызове для бесконечной длительности

abstract def toCoarsest: Duration

Возвращает длительность, равную этой длительности, но с самой грубой единицей измерения, или себя, если она уже самая грубая единица.

Примеры:

Duration(60, MINUTES).toCoarsest // Duration(1, HOURS)
Duration(1000, MILLISECONDS).toCoarsest // Duration(1, SECONDS)
Duration(48, HOURS).toCoarsest // Duration(2, DAYS)
Duration(5, SECONDS).toCoarsest // Duration(5, SECONDS)

abstract def toDays: Long

Возвращает длительность этой длительности, измеренную в целых днях, округляя к нулю.

Исключения

IllegalArgumentException при вызове для бесконечной длительности

abstract def toHours: Long

Возвращает длительность этой длительности, измеренную в целых часах, округляя к нулю.

Исключения

IllegalArgumentException при вызове для бесконечной длительности

abstract def toMicros: Long

Возвращает длительность этой длительности, измеренную в целых микросекундах, округляя к нулю.

Исключения

IllegalArgumentException при вызове для бесконечной длительности

abstract def toMillis: Long

Возвращает длительность этой длительности, измеренную в целых миллисекундах, округляя к нулю.

Исключения

IllegalArgumentException при вызове для бесконечной длительности

abstract def toMinutes: Long

Возвращает длительность этой продолжительности в целых минутах, округляя к нулю.

Исключения

IllegalArgumentException при вызове для бесконечной продолжительности

abstract def toNanos: Long

Возвращает длительность этой продолжительности в целых наносекундах, округляя к нулю.

Исключения

IllegalArgumentException при вызове для бесконечной продолжительности

abstract def toSeconds: Long

Возвращает длительность этой продолжительности в целых секундах, округляя к нулю.

Исключения

IllegalArgumentException при вызове для бесконечной продолжительности

abstract def toUnit(unit: TimeUnit): Double

Возвращает число наносекунд как число с плавающей точкой, масштабированное до заданной единицы измерения. Результат может не точно представлять эту продолжительность из-за ограничений типа Double (размер мантиссы фактически 53 бита). Бесконечные продолжительности представлены как

    Duration.Undefined отображается как Double.NaN Duration.Inf отображается как Double.PositiveInfinity Duration.MinusInf отображается как Double.NegativeInfinity

abstract def unary_-: Duration

Изменение знака продолжительности. Единственные два значения, отображаемые в себя, это Duration.Zero и Duration.Undefined.

abstract def unit: TimeUnit

Получение единицы измерения времени, в которой измеряется длительность.

Исключения

IllegalArgumentException при вызове для бесконечной продолжительности

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

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 ->[B](y: B): (Duration, B)

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

def <(that: Duration): Boolean

Возвращает true, если this меньше that

Классы определений
Ordered

def <=(that: Duration): Boolean

Возвращает true, если this меньше или равно that.

Классы определений
Ordered

final def ==(arg0: Any): Boolean

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

возвращает

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

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

def >(that: Duration): Boolean

Возвращает true, если this больше that.

Классы определений
Ordered

def >=(that: Duration): Boolean

Возвращает true, если this больше или равно that.

Классы определений
Ordered

final def asInstanceOf[T0]: T0

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

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

возвращает

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

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

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

def clone(): AnyRef

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

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

возвращает

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

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

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

def compareTo(that: Duration): Int

Результат сравнения this с операндом that.

Классы определений
Ordered → Comparable

def div(other: Duration): Double

Возвращает частное от деления этого и данного промежутка времени как число с плавающей запятой. Семантика определяется типом Double, как если бы производилось вычисление частного от длины в наносекундах обоих сомножителей.

def div(divisor: Double): Duration

Возвращает этот промежуток времени, делённый на скалярный множитель. При работе с бесконечными множителями семантика соответствует семантике Double.

Исключения

IllegalArgumentException в случае конечного переполнения: диапазон конечного промежутка времени — +-(2^63-1)ns, and no conversion to infinite durations takes place.

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

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

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

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

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

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

def ensuring(cond: Boolean): Duration

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

final def eq(arg0: AnyRef): Boolean

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

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

    Он согласован: для любых непустых экземпляров x и y типа AnyRef, несколько вызовов x.eq(y) последовательно возвращают true или последовательно возвращают false.Для любого непустого экземпляра 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(arg0: AnyRef): Boolean

Метод равенства для ссылочных типов. Реализация по умолчанию делегирует вызов eq.

См. также equals в scala.Any.

возвращает

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

Определяющие классы
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).

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

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

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

возвращает

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

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

def gt(other: Duration): Boolean

def gteq(other: Duration): Boolean

def hashCode(): Int

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

возвращает

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

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

final def isInstanceOf[T0]: Boolean

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

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

возвращает

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

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

def lt(other: Duration): Boolean

def lteq(other: Duration): Boolean

def max(other: Duration): Duration

def min(other: Duration): Duration

def minus(other: Duration): Duration

Возвращает разницу между этой продолжительностью и заданной. При работе с бесконечными значениями семантика соответствует семантике Double.

Исключения

IllegalArgumentException в случае конечного переполнения: диапазон конечной продолжительности +-(2^63-1)ns, and no conversion to infinite durations takes place.

def mul(factor: Double): Duration

Возвращает эту продолжительность, умноженную на скалярный множитель. При работе с бесконечными значениями семантика соответствует семантике Double.

Исключения

IllegalArgumentException в случае конечного переполнения: диапазон конечной продолжительности +-(2^63-1)ns, and no conversion to infinite durations takes place.

final def ne(arg0: AnyRef): Boolean

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

возвращает

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

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

def neg(): Duration

Изменяет знак этой продолжительности. Единственные два значения, которые отображаются на себя, это Duration.Zero и Duration.Undefined.

final def notify(): Unit

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

Классы-определения
AnyRef
Аннотации
@native()
Примечание

не указано SLS как член AnyRef

final def notifyAll(): Unit

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

Классы-определения
AnyRef
Аннотации
@native()
Примечание

не указано SLS как член AnyRef

def plus(other: Duration): Duration

Возвращает сумму этой длительности и переданной. При работе с бесконечными слагаемыми семантика соответствует семантике Double.

Исключения

IllegalArgumentException в случае конечного переполнения: диапазон конечной длительности +-(2^63-1)ns, and no conversion to infinite durations takes place.

def productArity: Int

Арность этого произведения.

возвращает

2

Неявный
Этот член добавлен неявным преобразованием из Duration в (Long, TimeUnit) с помощью метода durationToPair в scala.concurrent.duration.
Классы-определения
Product2 → Product

def productElement(n: Int): Any

Возвращает n-ую проекцию этого произведения, если 0 <= n < productArity, в противном случае выбрасывает IndexOutOfBoundsException.

n

номер проекции, которая должна быть возвращена

возвращает

то же, что и ._(n+1), например, productElement(0) то же, что и ._1.

Неявный
Этот член добавлен неявным преобразованием из Duration в (Long, TimeUnit) с помощью метода durationToPair в scala.concurrent.duration.
Классы-определения
Product2 → Product
Аннотации
@throws(classOf[IndexOutOfBoundsException])
Исключения

IndexOutOfBoundsException, если n выходит за пределы диапазона (n < 0 || n >= 2).

def productElementNames: Iterator[String]

Итератор по именам всех элементов этого произведения.

Неявный
Этот член добавлен неявным преобразованием из Duration в (Long, TimeUnit) с помощью метода durationToPair в scala.concurrent.duration.
Классы-определения
Product

def swap: (TimeUnit, Long)

Меняет местами элементы этого Tuple.

возвращает

новый кортеж, где первый элемент — второй элемент этого кортежа, а второй элемент — первый элемент этого кортежа.

Неявный
Этот член добавлен неявным преобразованием из Duration в (Long, TimeUnit) с помощью метода durationToPair в scala.concurrent.duration.
Классы-определения
Tuple2

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

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

def toString(): String

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

возвращает

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

Классы-определения
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()

Члены-значения неявного затемнения

def +(other: String): String

Неявный
Этот член добавлен неявным преобразованием из Duration вany2stringadd[Duration] с помощью метода any2stringadd в scala.Predef.
Затемнение
Этот неявный унаследованный член затемнён одним или несколькими членами в этом классе.
Для доступа к этому члену можно использовать приведение типа:
(duration: any2stringadd[Duration]).+(other)
Определяющие классы
any2stringadd

def <(that: Duration): Boolean

Возвращает true, если this меньше, чем that

Неявный
Этот член добавлен неявным преобразованием из Duration вmath.Ordered[Duration] с помощью метода orderingToOrdered в scala.math.Ordered.
Затемнение
Этот неявный унаследованный член затемнён одним или несколькими членами в этом классе.
Для доступа к этому члену можно использовать приведение типа:
(duration: math.Ordered[Duration]).<(that)
Определяющие классы
Ordered

def <=(that: Duration): Boolean

Возвращает true, если this меньше или равно that.

Неявный
Этот член добавлен неявным преобразованием из Duration вmath.Ordered[Duration] с помощью метода orderingToOrdered в scala.math.Ordered.
Затемнение
Этот неявный унаследованный член затемнён одним или несколькими членами в этом классе.
Для доступа к этому члену можно использовать приведение типа:
(duration: math.Ordered[Duration]).<=(that)
Определяющие классы
Ordered

def >(that: Duration): Boolean

Возвращает true, если this больше, чем that.

Неявный
Этот член добавлен неявным преобразованием из Duration вmath.Ordered[Duration] с помощью метода orderingToOrdered в scala.math.Ordered.
Затемнение
Этот неявный унаследованный член затемнён одним или несколькими членами в этом классе.
Для доступа к этому члену можно использовать приведение типа:
(duration: math.Ordered[Duration]).>(that)
Определяющие классы
Ordered

def >=(that: Duration): Boolean

Возвращает true, если this больше или равно that.

Неявный
Этот член добавлен неявным преобразованием из Duration вmath.Ordered[Duration] с помощью метода orderingToOrdered в scala.math.Ordered.
Затемнение
Этот неявный унаследованный член затемнён одним или несколькими членами в этом классе.
Для доступа к этому члену можно использовать приведение типа:
(duration: math.Ordered[Duration]).>=(that)
Определяющие классы
Ordered

def compare(that: Duration): Int

Результат сравнения this с операндом that.

Реализуйте этот метод, чтобы определить способ сортировки экземпляров A.

Возвращает x, где:

    x < 0 когда this < that x == 0 когда this == that x > 0 когда this > that

Неявный
Этот член добавлен неявным преобразованием из Duration вmath.Ordered[Duration] с помощью метода orderingToOrdered в scala.math.Ordered.
Затемнение
Этот неявный унаследованный член затемнён одним или несколькими членами в этом классе.
Для доступа к этому члену можно использовать приведение типа:
(duration: math.Ordered[Duration]).compare(that)
Определяющие классы
Ordered

def compareTo(that: Duration): Int

Результат сравнения this с операндом that.

Неявное
Этот член добавлен благодаря неявной конверсии из Duration в math.Ordered[Duration] с помощью метода orderingToOrdered в scala.math.Ordered.
Затенение
Этот неявно унаследованный член затенён одним или несколькими членами в этом классе.
Для доступа к этому члену можно использовать приведение типов:
(duration: math.Ordered[Duration]).compareTo(that)
Классы-определения
Ordered → Comparable

def toString(): String

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

возвращает

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

Неявное
Этот член добавлен благодаря неявной конверсии из Duration в (Long, TimeUnit) с помощью метода durationToPair в scala.concurrent.duration.
Затенение
Этот неявно унаследованный член затенён одним или несколькими членами в этом классе.
Для доступа к этому члену можно использовать приведение типов:
(duration: (Long, TimeUnit)).toString()
Классы-определения
Tuple2 → AnyRef → 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/concurrent/duration/Duration.html

Spec-Zone.ru

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