src/share/classes/java/time/Clock.java
Print this page
*** 375,438 ****
* <p>
* Most applications should avoid this method and use {@link Instant} to represent
* an instant on the time-line rather than a raw millisecond value.
* This method is provided to allow the use of the clock in high performance use cases
* where the creation of an object would be unacceptable.
*
* @return the current millisecond instant from this clock, measured from
* the Java epoch of 1970-01-01T00:00 UTC, not null
* @throws DateTimeException if the instant cannot be obtained, not thrown by most implementations
*/
! public abstract long millis();
//-----------------------------------------------------------------------
/**
* Gets the current instant of the clock.
* <p>
* This returns an instant representing the current instant as defined by the clock.
- * <p>
- * The default implementation currently calls {@link #millis}.
*
* @return the current instant from this clock, not null
* @throws DateTimeException if the instant cannot be obtained, not thrown by most implementations
*/
! public Instant instant() {
! return Instant.ofEpochMilli(millis());
! }
//-----------------------------------------------------------------------
/**
* Checks if this clock is equal to another clock.
* <p>
! * Clocks must compare equal based on their state and behavior.
*
* @param obj the object to check, null returns false
* @return true if this is equal to the other clock
*/
@Override
! public abstract boolean equals(Object obj);
/**
* A hash code for this clock.
- *
- * @return a suitable hash code
- */
- @Override
- public abstract int hashCode();
-
- //-----------------------------------------------------------------------
- /**
- * Returns a string describing this clock.
* <p>
! * Clocks must have a string representation based on their state and behavior.
! * For example, 'System[Europe/Paris]' could be used to represent the System
! * clock in the 'Europe/Paris' time-zone.
*
! * @return a string representation of this clock, not null
*/
@Override
! public abstract String toString();
//-----------------------------------------------------------------------
/**
* Implementation of a clock that always returns the latest time from
* {@link System#currentTimeMillis()}.
--- 375,435 ----
* <p>
* Most applications should avoid this method and use {@link Instant} to represent
* an instant on the time-line rather than a raw millisecond value.
* This method is provided to allow the use of the clock in high performance use cases
* where the creation of an object would be unacceptable.
+ * <p>
+ * The default implementation currently calls {@link #instant}.
*
* @return the current millisecond instant from this clock, measured from
* the Java epoch of 1970-01-01T00:00 UTC, not null
* @throws DateTimeException if the instant cannot be obtained, not thrown by most implementations
*/
! public long millis() {
! return instant().toEpochMilli();
! }
//-----------------------------------------------------------------------
/**
* Gets the current instant of the clock.
* <p>
* This returns an instant representing the current instant as defined by the clock.
*
* @return the current instant from this clock, not null
* @throws DateTimeException if the instant cannot be obtained, not thrown by most implementations
*/
! public abstract Instant instant();
//-----------------------------------------------------------------------
/**
* Checks if this clock is equal to another clock.
* <p>
! * Clocks should override this method to compare equals based on
! * their state and to meet the contract of {@link Object#equals}.
! * If not overridden, the behavior is defined by {@link Object#equals}
*
* @param obj the object to check, null returns false
* @return true if this is equal to the other clock
*/
@Override
! public boolean equals(Object obj) {
! return super.equals(obj);
! }
/**
* A hash code for this clock.
* <p>
! * Clocks should override this method based on
! * their state and to meet the contract of {@link Object#hashCode}.
! * If not overridden, the behavior is defined by {@link Object#hashCode}
*
! * @return a suitable hash code
*/
@Override
! public int hashCode() {
! return super.hashCode();
! }
//-----------------------------------------------------------------------
/**
* Implementation of a clock that always returns the latest time from
* {@link System#currentTimeMillis()}.
*** 458,467 ****
--- 455,468 ----
@Override
public long millis() {
return System.currentTimeMillis();
}
@Override
+ public Instant instant() {
+ return Instant.ofEpochMilli(millis());
+ }
+ @Override
public boolean equals(Object obj) {
if (obj instanceof SystemClock) {
return zone.equals(((SystemClock) obj).zone);
}
return false;