75 import java.time.ZoneId;
76 import java.time.temporal.ChronoField;
77 import java.time.temporal.TemporalAccessor;
78 import java.time.temporal.TemporalAdjuster;
79 import java.time.temporal.TemporalAmount;
80 import java.time.temporal.TemporalField;
81 import java.time.temporal.TemporalQuery;
82 import java.time.temporal.TemporalUnit;
83 import java.time.temporal.UnsupportedTemporalTypeException;
84 import java.time.temporal.ValueRange;
85 import java.util.Objects;
86
87 /**
88 * A date in the Thai Buddhist calendar system.
89 * <p>
90 * This date operates using the {@linkplain ThaiBuddhistChronology Thai Buddhist calendar}.
91 * This calendar system is primarily used in Thailand.
92 * Dates are aligned such that {@code 2484-01-01 (Buddhist)} is {@code 1941-01-01 (ISO)}.
93 * <p>
94 * This is a <a href="{@docRoot}/java.base/java/lang/doc-files/ValueBased.html">value-based</a>
95 * class; programmers should treat instances that are
96 * {@linkplain #equals(Object) equal} as interchangeable and should not
97 * use instances for synchronization, or unpredictable behavior may
98 * occur. For example, in a future release, synchronization may fail.
99 * The {@code equals} method should be used for comparisons.
100 *
101 * @implSpec
102 * This class is immutable and thread-safe.
103 *
104 * @since 1.8
105 */
106 @jdk.internal.ValueBased
107 public final class ThaiBuddhistDate
108 extends ChronoLocalDateImpl<ThaiBuddhistDate>
109 implements ChronoLocalDate, Serializable {
110
111 /**
112 * Serialization version.
113 */
114 @java.io.Serial
115 private static final long serialVersionUID = -8722293800195731463L;
116
117 /**
118 * The underlying date.
119 */
120 private final transient LocalDate isoDate;
121
122 //-----------------------------------------------------------------------
123 /**
124 * Obtains the current {@code ThaiBuddhistDate} from the system clock in the default time-zone.
125 * <p>
126 * This will query the {@link Clock#systemDefaultZone() system clock} in the default
|
75 import java.time.ZoneId;
76 import java.time.temporal.ChronoField;
77 import java.time.temporal.TemporalAccessor;
78 import java.time.temporal.TemporalAdjuster;
79 import java.time.temporal.TemporalAmount;
80 import java.time.temporal.TemporalField;
81 import java.time.temporal.TemporalQuery;
82 import java.time.temporal.TemporalUnit;
83 import java.time.temporal.UnsupportedTemporalTypeException;
84 import java.time.temporal.ValueRange;
85 import java.util.Objects;
86
87 /**
88 * A date in the Thai Buddhist calendar system.
89 * <p>
90 * This date operates using the {@linkplain ThaiBuddhistChronology Thai Buddhist calendar}.
91 * This calendar system is primarily used in Thailand.
92 * Dates are aligned such that {@code 2484-01-01 (Buddhist)} is {@code 1941-01-01 (ISO)}.
93 * <p>
94 * This is a <a href="{@docRoot}/java.base/java/lang/doc-files/ValueBased.html">value-based</a>
95 * class; programmers should treat instances that are {@linkplain #equals(Object) equal}
96 * as interchangeable and should not use instances for synchronization, mutexes, or
97 * with {@linkplain java.lang.ref.Reference object references}.
98 *
99 * <div class="preview-block">
100 * <div class="preview-comment">
101 * When preview features are enabled, {@code ThaiBuddistDate} is a {@linkplain Class#isValue value class}.
102 * Use of value class instances for synchronization, mutexes, or with
103 * {@linkplain java.lang.ref.Reference object references} result in
104 * {@link IdentityException}.
105 * </div>
106 * </div>
107 *
108 * @implSpec
109 * This class is immutable and thread-safe.
110 *
111 * @since 1.8
112 */
113 @jdk.internal.ValueBased
114 @jdk.internal.MigratedValueClass
115 public final class ThaiBuddhistDate
116 extends ChronoLocalDateImpl<ThaiBuddhistDate>
117 implements ChronoLocalDate, Serializable {
118
119 /**
120 * Serialization version.
121 */
122 @java.io.Serial
123 private static final long serialVersionUID = -8722293800195731463L;
124
125 /**
126 * The underlying date.
127 */
128 private final transient LocalDate isoDate;
129
130 //-----------------------------------------------------------------------
131 /**
132 * Obtains the current {@code ThaiBuddhistDate} from the system clock in the default time-zone.
133 * <p>
134 * This will query the {@link Clock#systemDefaultZone() system clock} in the default
|