Spec-Zone .ru
спецификации, руководства, описания, API
|
public abstract class Clock extends Object
Экземпляры этого class используются, чтобы найти текущий момент, который может быть интерпретирован, используя сохраненный часовой пояс, чтобы найти текущую дату и время. Также, часы могут использоваться вместо System.currentTimeMillis()
и TimeZone.getDefault()
.
Использование a Clock
является дополнительным. У всех разовых основным сроком классов также есть a now()
метод фабрики, который использует системные часы в часовом поясе значения по умолчанию. Основная цель этой абстракции состоит в том, чтобы позволить альтернативным часам быть включенными как и когда требующийся. Приложения используют объект получить текущее время, а не статический метод. Это может упростить тестирование.
Передовая практика для приложений должна передать a Clock
в любой метод, который требует текущего момента. Платформа внедрения зависимости является одним способом достигнуть этого:
public class MyBean { private Clock clock; // dependency inject ... public void process(LocalDate eventDate) { if (eventDate.isBefore(LocalDate.now(clock)) { ... } } }Этот подход позволяет альтернативные часы, такой как
fixed
или offset
использоваться во время тестирования. system
методы фабрики обеспечивают, часы, основанные на наилучшей имеющейся системе, синхронизируют, Это может использовать System.currentTimeMillis()
, или более высокое разрешение синхронизирует, если Вы доступны.
Основные методы определяются, чтобы позволить бросок исключения. В нормальной эксплуатации никакие исключения не будут выданы, однако одна возможная реализация должна была бы получить время из сервера центрального поясного времени по сети. Очевидно, в этом случае поиск мог перестать работать, и таким образом, методу разрешают выдать исключение.
Возвращенные моменты от Clock
работа над масштабом времени, который игнорирует секунды прыжка, как описано в Instant
. Если реализация обертывает источник, который обеспечивает прыжок вторая информация, то механизм должен использоваться, чтобы "пригладить" второй прыжок. Масштаб времени Java передает под мандат использование SL UTC, однако синхронизируйте реализации, может выбрать, насколько точный они с масштабом времени, пока они документируют, как они работают. Реализации поэтому не требуются фактически выполнить SL UTC, убивал или иначе знать о секундах прыжка.
Реализации должны реализовать Serializable
везде, где возможный и должен задокументировать, поддерживают ли они действительно сериализацию.
System.currentTimeMillis()
. Тот метод не обеспечивает немного ни для какой гарантии о точности часов. Приложения, требующие более точных часов, должны реализовать этот абстрактный class, самостоятельно используя различный внешний таймер, такой как сервер NTP.Модификатор | Конструктор и Описание |
---|---|
protected |
Clock()
Конструктор, доступный подклассами.
|
Модификатор и Тип | Метод и Описание |
---|---|
boolean |
equals(Object obj)
Проверки, если эти часы равны другим часам.
|
static Clock |
fixed(Instant fixedInstant, ZoneId zone)
Получает часы, которые всегда возвращают тот же самый момент.
|
abstract ZoneId |
getZone()
Получает часовой пояс, используемый, чтобы создать даты и времена.
|
int |
hashCode()
Хэш-код для этих часов.
|
abstract Instant |
instant()
Получает текущий момент часов.
|
long |
millis()
Получает текущий момент миллисекунды часов.
|
static Clock |
offset(Clock baseClock, Duration offsetDuration)
Получает часы, которые возвращают моменты из указанных часов с указанной добавленной продолжительностью
|
static Clock |
system(ZoneId zone)
Получает часы, которые возвращают текущие мгновенные использующие наилучшие имеющиеся системные часы.
|
static Clock |
systemDefaultZone()
Получает часы, которые возвращают текущий момент, используя наилучшие имеющиеся системные часы, преобразовывая до настоящего времени и время, используя часовой пояс значения по умолчанию.
|
static Clock |
systemUTC()
Получает часы, которые возвращают текущий момент, используя наилучшие имеющиеся системные часы, преобразовывая до настоящего времени и время, используя часовой пояс UTC.
|
static Clock |
tick(Clock baseClock, Duration tickDuration)
Получает часы, которые возвращают моменты из указанных часов, усеченных к самому близкому возникновению указанной продолжительности.
|
static Clock |
tickMinutes(ZoneId zone)
Получает часы, которые возвращают текущую мгновенную отметку в целые минуты, используя наилучшие имеющиеся системные часы.
|
static Clock |
tickSeconds(ZoneId zone)
Получает часы, которые возвращают текущую мгновенную отметку в целые секунды, используя наилучшие имеющиеся системные часы.
|
abstract Clock |
withZone(ZoneId zone)
Возвращает копию этих часов с различным часовым поясом.
|
public static Clock systemUTC()
Эти часы, а не systemDefaultZone()
, должен использоваться, когда Вам требуется текущий момент без даты или время.
Эти часы основаны на наилучших имеющихся системных часах. Это может использовать System.currentTimeMillis()
, или более высокое разрешение синхронизирует, если Вы доступны.
Преобразование с момента до настоящего времени или времени использует часовой пояс UTC.
Возвращенная реализация является неизменной, ориентированной на многопотоковое исполнение и Serializable
. Это эквивалентно system(ZoneOffset.UTC)
.
public static Clock systemDefaultZone()
Эти часы основаны на наилучших имеющихся системных часах. Это может использовать System.currentTimeMillis()
, или более высокое разрешение синхронизирует, если Вы доступны.
Используя этот метод твердые коды зависимость к часовому поясу значения по умолчанию в Ваше приложение. Рекомендуется избежать этого и использовать определенный часовой пояс когда бы ни было возможно. UTC clock
должен использоваться, когда Вам требуется текущий момент без даты или время.
Возвращенная реализация является неизменной, ориентированной на многопотоковое исполнение и Serializable
. Это эквивалентно system(ZoneId.systemDefault())
.
ZoneId.systemDefault()
public static Clock system(ZoneId zone)
Эти часы основаны на наилучших имеющихся системных часах. Это может использовать System.currentTimeMillis()
, или более высокое разрешение синхронизирует, если Вы доступны.
Преобразование с момента до настоящего времени или времени использует указанный часовой пояс.
Возвращенная реализация является неизменной, ориентированной на многопотоковое исполнение и Serializable
.
zone
- часовой пояс, чтобы использовать, чтобы преобразовать до настоящего времени разовый момент, не нулевойpublic static Clock tickSeconds(ZoneId zone)
Этим часам будут всегда обнулять nano-of-second поле. Это гарантирует, что видимое время отсчитывает в целые секунды. Базовые часы являются наилучшими имеющимися системными часами, эквивалентными использованию system(ZoneId)
.
Реализации могут использовать кэширующуюся стратегию по причинам производительности. Также, возможно, что запуск второго, наблюдаемого через эти часы, будет позже чем наблюдаемое непосредственно через базовые часы.
Возвращенная реализация является неизменной, ориентированной на многопотоковое исполнение и Serializable
. Это эквивалентно tick(system(zone), Duration.ofSeconds(1))
.
zone
- часовой пояс, чтобы использовать, чтобы преобразовать до настоящего времени разовый момент, не нулевойpublic static Clock tickMinutes(ZoneId zone)
У этих часов всегда будут nano-of-second и вторые-минутного поля обнуленными. Это гарантирует, что видимое время отсчитывает в целые минуты. Базовые часы являются наилучшими имеющимися системными часами, эквивалентными использованию system(ZoneId)
.
Реализации могут использовать кэширующуюся стратегию по причинам производительности. Также, возможно, что запуск минуты, наблюдаемой через эти часы, будет позже чем наблюдаемое непосредственно через базовые часы.
Возвращенная реализация является неизменной, ориентированной на многопотоковое исполнение и Serializable
. Это эквивалентно tick(system(zone), Duration.ofMinutes(1))
.
zone
- часовой пояс, чтобы использовать, чтобы преобразовать до настоящего времени разовый момент, не нулевойpublic static Clock tick(Clock baseClock, Duration tickDuration)
Эти часы будут только тикать согласно указанной продолжительности. Таким образом, если продолжительность будет половиной секунды, то часы возвратят моменты, усеченные наполовину второй.
Продолжительность галочки должна быть положительной. Если у этого есть часть, меньшая чем целая миллисекунда, то целая продолжительность должна разделиться на одну секунду, не оставляя остаток. Все нормальные продолжительности галочки будут соответствовать эти критерии, включая любое кратное число часов, минут, секунд и миллисекунд, и заметных продолжительностей наносекунды, таких как 20 нс, 250 000 нс и 500 000 нс.
Продолжительность нуля или одна наносекунда не имела бы никакого эффекта усечения. Передача одного из них возвратит базовые часы.
Реализации могут использовать кэширующуюся стратегию по причинам производительности. Также, возможно, что запуск требуемой продолжительности, наблюдаемой через эти часы, будет позже чем наблюдаемое непосредственно через базовые часы.
Возвращенная реализация является неизменной, ориентированной на многопотоковое исполнение и Serializable
если это основные часы.
baseClock
- основные часы, чтобы базировать отметку отмечают время прихода на работу, не нульtickDuration
- продолжительность каждой видимой галочки, не отрицательной, не нулевойIllegalArgumentException
- если продолжительность отрицательна, или имеет часть, меньшую чем целая миллисекунда так, что, целая продолжительность не является делимой в одну секундуArithmeticException
- если продолжительность является слишком большой, чтобы быть представленной как nanospublic static Clock fixed(Instant fixedInstant, ZoneId zone)
Эти часы просто возвращают указанный момент. Также, это не часы в стандартном смысле. Основной вариант использования для этого находится в тестировании, где фиксированные часы гарантируют, что тесты не зависят от текущих часов.
Возвращенная реализация является неизменной, ориентированной на многопотоковое исполнение и Serializable
.
fixedInstant
- момент, чтобы использовать в качестве часов, не нуляzone
- часовой пояс, чтобы использовать, чтобы преобразовать до настоящего времени разовый момент, не нулевойpublic static Clock offset(Clock baseClock, Duration offsetDuration)
Эти часы обертывают другие часы, возвращая моменты, которые являются позже указанной продолжительностью. Если продолжительность будет отрицательна, то моменты будут ранее чем текущая дата и время. Основной вариант использования для этого должен моделировать выполнение в будущем или в прошлом.
Продолжительность нуля не имела бы никакого эффекта смещения. Передача нуля возвратит базовые часы.
Возвращенная реализация является неизменной, ориентированной на многопотоковое исполнение и Serializable
если это основные часы.
baseClock
- основные часы, чтобы добавить продолжительность к, не нульoffsetDuration
- продолжительность, чтобы добавить, не нульpublic abstract ZoneId getZone()
Часы будут обычно получать текущий момент и затем преобразовывать это в дату или время, используя часовой пояс. Этот метод возвращает используемый часовой пояс.
public abstract Clock withZone(ZoneId zone)
Часы будут обычно получать текущий момент и затем преобразовывать это в дату или время, используя часовой пояс. Этот метод возвращает часы с подобными свойствами, но использованием различного часового пояса.
zone
- часовой пояс, чтобы изменить на, не нульpublic long millis()
Это возвращает основанный на миллисекунде момент, измеренный от 1970-01-01T00:00Z (UTC). Это эквивалентно определению System.currentTimeMillis()
.
Большинство приложений должно избежать этого метода и использования Instant
представлять момент на временной шкале, а не необработанном значении миллисекунды. Этот метод обеспечивается, чтобы позволить использование часов в высокопроизводительных вариантах использования, где создание объекта было бы недопустимо.
Реализация по умолчанию в настоящий момент вызывает instant()
.
DateTimeException
- если момент не может быть получен, не брошенный большинством реализацийpublic abstract Instant instant()
Это возвращает момент, представляя текущий момент как определено часами.
DateTimeException
- если момент не может быть получен, не брошенный большинством реализацийpublic boolean equals(Object obj)
Часы должны переопределить этот метод, чтобы сравниться, равняется основанный на их состоянии и встретить контракт Object.equals(java.lang.Object)
. Если не переопределенный, поведение определяется Object.equals(java.lang.Object)
equals
в class Object
obj
- объект проверить, обнулите, возвращает falseObject.hashCode()
, HashMap
public int hashCode()
Часы должны переопределить этот метод, основанный на их состоянии и встретить контракт Object.hashCode()
. Если не переопределенный, поведение определяется Object.hashCode()
hashCode
в class Object
Object.equals(java.lang.Object)
, System.identityHashCode(java.lang.Object)
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92