diff --git a/jdk/src/share/classes/java/time/Duration.java b/jdk/src/share/classes/java/time/Duration.java index 8650cdffecd..4a5220000f6 100644 --- a/jdk/src/share/classes/java/time/Duration.java +++ b/jdk/src/share/classes/java/time/Duration.java @@ -118,6 +118,13 @@ import java.util.regex.Pattern; * most applications. * See {@link Instant} for a discussion as to the meaning of the second and time-scales. * + *

+ * This is a value-based + * class; use of identity-sensitive operations (including reference equality + * ({@code ==}), identity hash code, or synchronization) on instances of + * {@code Duration} may have unpredictable results and should be avoided. + * The {@code equals} method should be used for comparisons. + * * @implSpec * This class is immutable and thread-safe. * diff --git a/jdk/src/share/classes/java/time/Instant.java b/jdk/src/share/classes/java/time/Instant.java index 2f03ff5c5de..d91e1c86568 100644 --- a/jdk/src/share/classes/java/time/Instant.java +++ b/jdk/src/share/classes/java/time/Instant.java @@ -197,6 +197,13 @@ import java.util.Objects; * This includes {@code Instant}, {@code LocalDate}, {@code LocalTime}, {@code OffsetDateTime}, * {@code ZonedDateTime} and {@code Duration}. * + *

+ * This is a value-based + * class; use of identity-sensitive operations (including reference equality + * ({@code ==}), identity hash code, or synchronization) on instances of + * {@code Instant} may have unpredictable results and should be avoided. + * The {@code equals} method should be used for comparisons. + * * @implSpec * This class is immutable and thread-safe. * diff --git a/jdk/src/share/classes/java/time/LocalDate.java b/jdk/src/share/classes/java/time/LocalDate.java index 91a2adf0e3a..c8ee89c87c5 100644 --- a/jdk/src/share/classes/java/time/LocalDate.java +++ b/jdk/src/share/classes/java/time/LocalDate.java @@ -122,6 +122,13 @@ import java.util.Objects; * However, any application that makes use of historical dates, and requires them * to be accurate will find the ISO-8601 approach unsuitable. * + *

+ * This is a value-based + * class; use of identity-sensitive operations (including reference equality + * ({@code ==}), identity hash code, or synchronization) on instances of + * {@code LocalDate} may have unpredictable results and should be avoided. + * The {@code equals} method should be used for comparisons. + * * @implSpec * This class is immutable and thread-safe. * diff --git a/jdk/src/share/classes/java/time/LocalDateTime.java b/jdk/src/share/classes/java/time/LocalDateTime.java index f8787a6c25d..f9975d82329 100644 --- a/jdk/src/share/classes/java/time/LocalDateTime.java +++ b/jdk/src/share/classes/java/time/LocalDateTime.java @@ -120,6 +120,13 @@ import java.util.Objects; * However, any application that makes use of historical dates, and requires them * to be accurate will find the ISO-8601 approach unsuitable. * + *

+ * This is a value-based + * class; use of identity-sensitive operations (including reference equality + * ({@code ==}), identity hash code, or synchronization) on instances of + * {@code LocalDateTime} may have unpredictable results and should be avoided. + * The {@code equals} method should be used for comparisons. + * * @implSpec * This class is immutable and thread-safe. * diff --git a/jdk/src/share/classes/java/time/LocalTime.java b/jdk/src/share/classes/java/time/LocalTime.java index a1945c36383..08a06317413 100644 --- a/jdk/src/share/classes/java/time/LocalTime.java +++ b/jdk/src/share/classes/java/time/LocalTime.java @@ -110,6 +110,13 @@ import java.util.Objects; * in most of the world. This API assumes that all calendar systems use the same * representation, this class, for time-of-day. * + *

+ * This is a value-based + * class; use of identity-sensitive operations (including reference equality + * ({@code ==}), identity hash code, or synchronization) on instances of + * {@code LocalTime} may have unpredictable results and should be avoided. + * The {@code equals} method should be used for comparisons. + * * @implSpec * This class is immutable and thread-safe. * diff --git a/jdk/src/share/classes/java/time/MonthDay.java b/jdk/src/share/classes/java/time/MonthDay.java index 6801d296f41..2339cad5397 100644 --- a/jdk/src/share/classes/java/time/MonthDay.java +++ b/jdk/src/share/classes/java/time/MonthDay.java @@ -112,6 +112,13 @@ import java.util.Objects; * However, any application that makes use of historical dates, and requires them * to be accurate will find the ISO-8601 approach unsuitable. * + *

+ * This is a value-based + * class; use of identity-sensitive operations (including reference equality + * ({@code ==}), identity hash code, or synchronization) on instances of + * {@code MonthDay} may have unpredictable results and should be avoided. + * The {@code equals} method should be used for comparisons. + * * @implSpec * This class is immutable and thread-safe. * diff --git a/jdk/src/share/classes/java/time/OffsetDateTime.java b/jdk/src/share/classes/java/time/OffsetDateTime.java index 7c9d7a2106d..caecddca0f4 100644 --- a/jdk/src/share/classes/java/time/OffsetDateTime.java +++ b/jdk/src/share/classes/java/time/OffsetDateTime.java @@ -113,6 +113,13 @@ import java.util.Objects; * in simpler applications. This class may be used when modeling date-time concepts in * more detail, or when communicating to a database or in a network protocol. * + *

+ * This is a value-based + * class; use of identity-sensitive operations (including reference equality + * ({@code ==}), identity hash code, or synchronization) on instances of + * {@code OffsetDateTime} may have unpredictable results and should be avoided. + * The {@code equals} method should be used for comparisons. + * * @implSpec * This class is immutable and thread-safe. * diff --git a/jdk/src/share/classes/java/time/OffsetTime.java b/jdk/src/share/classes/java/time/OffsetTime.java index 621edf162c1..466cf5ae639 100644 --- a/jdk/src/share/classes/java/time/OffsetTime.java +++ b/jdk/src/share/classes/java/time/OffsetTime.java @@ -103,6 +103,13 @@ import java.util.Objects; * For example, the value "13:45.30.123456789+02:00" can be stored * in an {@code OffsetTime}. * + *

+ * This is a value-based + * class; use of identity-sensitive operations (including reference equality + * ({@code ==}), identity hash code, or synchronization) on instances of + * {@code OffsetTime} may have unpredictable results and should be avoided. + * The {@code equals} method should be used for comparisons. + * * @implSpec * This class is immutable and thread-safe. * diff --git a/jdk/src/share/classes/java/time/Period.java b/jdk/src/share/classes/java/time/Period.java index 46238b62943..ff6db0885f0 100644 --- a/jdk/src/share/classes/java/time/Period.java +++ b/jdk/src/share/classes/java/time/Period.java @@ -120,6 +120,13 @@ import java.util.regex.Pattern; * The period is modeled as a directed amount of time, meaning that individual parts of the * period may be negative. * + *

+ * This is a value-based + * class; use of identity-sensitive operations (including reference equality + * ({@code ==}), identity hash code, or synchronization) on instances of + * {@code Period} may have unpredictable results and should be avoided. + * The {@code equals} method should be used for comparisons. + * * @implSpec * This class is immutable and thread-safe. * diff --git a/jdk/src/share/classes/java/time/Year.java b/jdk/src/share/classes/java/time/Year.java index a032c7d4d38..cc68951351b 100644 --- a/jdk/src/share/classes/java/time/Year.java +++ b/jdk/src/share/classes/java/time/Year.java @@ -120,6 +120,13 @@ import java.util.Objects; * However, any application that makes use of historical dates, and requires them * to be accurate will find the ISO-8601 approach unsuitable. * + *

+ * This is a value-based + * class; use of identity-sensitive operations (including reference equality + * ({@code ==}), identity hash code, or synchronization) on instances of + * {@code Year} may have unpredictable results and should be avoided. + * The {@code equals} method should be used for comparisons. + * * @implSpec * This class is immutable and thread-safe. * diff --git a/jdk/src/share/classes/java/time/YearMonth.java b/jdk/src/share/classes/java/time/YearMonth.java index 4a8d257d897..e5f42100ac0 100644 --- a/jdk/src/share/classes/java/time/YearMonth.java +++ b/jdk/src/share/classes/java/time/YearMonth.java @@ -116,6 +116,13 @@ import java.util.Objects; * However, any application that makes use of historical dates, and requires them * to be accurate will find the ISO-8601 approach unsuitable. * + *

+ * This is a value-based + * class; use of identity-sensitive operations (including reference equality + * ({@code ==}), identity hash code, or synchronization) on instances of + * {@code YearMonth} may have unpredictable results and should be avoided. + * The {@code equals} method should be used for comparisons. + * * @implSpec * This class is immutable and thread-safe. * diff --git a/jdk/src/share/classes/java/time/ZoneId.java b/jdk/src/share/classes/java/time/ZoneId.java index 70dd7d1f891..9b8ebc7267a 100644 --- a/jdk/src/share/classes/java/time/ZoneId.java +++ b/jdk/src/share/classes/java/time/ZoneId.java @@ -160,6 +160,13 @@ import java.util.TimeZone; * This approach is designed to allow a {@link ZonedDateTime} to be loaded and * queried, but not modified, on a Java Runtime with incomplete time-zone information. * + *

+ * This is a value-based + * class; use of identity-sensitive operations (including reference equality + * ({@code ==}), identity hash code, or synchronization) on instances of + * {@code ZoneId} may have unpredictable results and should be avoided. + * The {@code equals} method should be used for comparisons. + * * @implSpec * This abstract class has two implementations, both of which are immutable and thread-safe. * One implementation models region-based IDs, the other is {@code ZoneOffset} modelling diff --git a/jdk/src/share/classes/java/time/ZoneOffset.java b/jdk/src/share/classes/java/time/ZoneOffset.java index 180eac41a27..efbdec9a934 100644 --- a/jdk/src/share/classes/java/time/ZoneOffset.java +++ b/jdk/src/share/classes/java/time/ZoneOffset.java @@ -115,6 +115,13 @@ import java.util.concurrent.ConcurrentMap; * Implementations may choose to cache certain common offsets, however * applications must not rely on such caching. * + *

+ * This is a value-based + * class; use of identity-sensitive operations (including reference equality + * ({@code ==}), identity hash code, or synchronization) on instances of + * {@code ZoneOffset} may have unpredictable results and should be avoided. + * The {@code equals} method should be used for comparisons. + * * @implSpec * This class is immutable and thread-safe. * diff --git a/jdk/src/share/classes/java/time/ZonedDateTime.java b/jdk/src/share/classes/java/time/ZonedDateTime.java index c7e73c45d68..b1342be5e47 100644 --- a/jdk/src/share/classes/java/time/ZonedDateTime.java +++ b/jdk/src/share/classes/java/time/ZonedDateTime.java @@ -142,6 +142,13 @@ import java.util.Objects; * a vital, but secondary, piece of information, used to ensure that the class * represents an instant, especially during a daylight savings overlap. * + *

+ * This is a value-based + * class; use of identity-sensitive operations (including reference equality + * ({@code ==}), identity hash code, or synchronization) on instances of + * {@code ZonedDateTime} may have unpredictable results and should be avoided. + * The {@code equals} method should be used for comparisons. + * * @implSpec * A {@code ZonedDateTime} holds state equivalent to three separate objects, * a {@code LocalDateTime}, a {@code ZoneId} and the resolved {@code ZoneOffset}. diff --git a/jdk/src/share/classes/java/time/chrono/HijrahDate.java b/jdk/src/share/classes/java/time/chrono/HijrahDate.java index bbaa8e04de7..9ab791ce8e5 100644 --- a/jdk/src/share/classes/java/time/chrono/HijrahDate.java +++ b/jdk/src/share/classes/java/time/chrono/HijrahDate.java @@ -103,6 +103,14 @@ import java.time.temporal.ValueRange; * to create new HijrahDate instances. * Alternatively, the {@link #withVariant} method can be used to convert * to a new HijrahChronology. + * + *

+ * This is a value-based + * class; use of identity-sensitive operations (including reference equality + * ({@code ==}), identity hash code, or synchronization) on instances of + * {@code HijrahDate} may have unpredictable results and should be avoided. + * The {@code equals} method should be used for comparisons. + * * @implSpec * This class is immutable and thread-safe. * diff --git a/jdk/src/share/classes/java/time/chrono/JapaneseDate.java b/jdk/src/share/classes/java/time/chrono/JapaneseDate.java index d68e496bd1c..5c7e545042a 100644 --- a/jdk/src/share/classes/java/time/chrono/JapaneseDate.java +++ b/jdk/src/share/classes/java/time/chrono/JapaneseDate.java @@ -111,6 +111,13 @@ import sun.util.calendar.LocalGregorianCalendar; * Calling {@code japaneseDate.get(ERA)} will return 2, corresponding to * {@code JapaneseChronology.ERA_HEISEI}.
* + *

+ * This is a value-based + * class; use of identity-sensitive operations (including reference equality + * ({@code ==}), identity hash code, or synchronization) on instances of + * {@code JapaneseDate} may have unpredictable results and should be avoided. + * The {@code equals} method should be used for comparisons. + * * @implSpec * This class is immutable and thread-safe. * diff --git a/jdk/src/share/classes/java/time/chrono/MinguoDate.java b/jdk/src/share/classes/java/time/chrono/MinguoDate.java index 0e9de44f463..2cb49b6b600 100644 --- a/jdk/src/share/classes/java/time/chrono/MinguoDate.java +++ b/jdk/src/share/classes/java/time/chrono/MinguoDate.java @@ -91,6 +91,13 @@ import java.util.Objects; * This calendar system is primarily used in the Republic of China, often known as Taiwan. * Dates are aligned such that {@code 0001-01-01 (Minguo)} is {@code 1912-01-01 (ISO)}. * + *

+ * This is a value-based + * class; use of identity-sensitive operations (including reference equality + * ({@code ==}), identity hash code, or synchronization) on instances of + * {@code MinguoDate} may have unpredictable results and should be avoided. + * The {@code equals} method should be used for comparisons. + * * @implSpec * This class is immutable and thread-safe. * diff --git a/jdk/src/share/classes/java/time/chrono/ThaiBuddhistDate.java b/jdk/src/share/classes/java/time/chrono/ThaiBuddhistDate.java index ba1e8d24e21..9e8b88d3465 100644 --- a/jdk/src/share/classes/java/time/chrono/ThaiBuddhistDate.java +++ b/jdk/src/share/classes/java/time/chrono/ThaiBuddhistDate.java @@ -91,6 +91,13 @@ import java.util.Objects; * This calendar system is primarily used in Thailand. * Dates are aligned such that {@code 2484-01-01 (Buddhist)} is {@code 1941-01-01 (ISO)}. * + *

+ * This is a value-based + * class; use of identity-sensitive operations (including reference equality + * ({@code ==}), identity hash code, or synchronization) on instances of + * {@code ThaiBuddhistDate} may have unpredictable results and should be avoided. + * The {@code equals} method should be used for comparisons. + * * @implSpec * This class is immutable and thread-safe. * diff --git a/jdk/test/java/time/tck/java/time/TCKLocalDateTime.java b/jdk/test/java/time/tck/java/time/TCKLocalDateTime.java index 6303f5acdc0..40ed5347589 100644 --- a/jdk/test/java/time/tck/java/time/TCKLocalDateTime.java +++ b/jdk/test/java/time/tck/java/time/TCKLocalDateTime.java @@ -1847,7 +1847,7 @@ public class TCKLocalDateTime extends AbstractDateTimeTest { LocalDateTime dt = base.plusMinutes(i); t = t.plusMinutes(1); - if (t == LocalTime.MIDNIGHT) { + if (t.equals(LocalTime.MIDNIGHT)) { d = d.plusDays(1); } @@ -2539,7 +2539,7 @@ public class TCKLocalDateTime extends AbstractDateTimeTest { LocalDateTime dt = base.minusMinutes(i); t = t.plusMinutes(1); - if (t == LocalTime.MIDNIGHT) { + if (t.equals(LocalTime.MIDNIGHT)) { d = d.plusDays(1); }