A field of date-time, such as month-of-year or hour-of-minute.
Date and time is expressed using fields which partition the time-line into something meaningful for humans. Implementations of this interface represent those fields.
The most commonly used units are defined in {@link ChronoField}. Further fields are supplied in {@link IsoFields}, {@link WeekFields} and {@link JulianFields}. Fields can also be written by application code by implementing this interface.
The field works using double dispatch. Client code calls methods on a date-time like {@code LocalDateTime} which check if the field is a {@code ChronoField}. If it is, then the date-time must handle it. Otherwise, the method call is re-dispatched to the matching method in this interface.
Specification for implementors
This interface must be implemented with care to ensure other classes operate correctly. All implementations that can be instantiated must be final, immutable and thread-safe. Implementations should be {@code Serializable} where possible.An enum is as effective implementation choice.