diff --git a/src/java.base/share/classes/java/time/chrono/AbstractChronology.java b/src/java.base/share/classes/java/time/chrono/AbstractChronology.java index acb49a419c4..b2a643d2c81 100644 --- a/src/java.base/share/classes/java/time/chrono/AbstractChronology.java +++ b/src/java.base/share/classes/java/time/chrono/AbstractChronology.java @@ -103,6 +103,8 @@ import java.util.ServiceLoader; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; import sun.util.logging.PlatformLogger; @@ -125,6 +127,7 @@ * * @since 1.8 */ +@NullMarked public abstract class AbstractChronology implements Chronology { /** @@ -417,7 +420,7 @@ protected AbstractChronology() { * because of a conflict in the input data */ @Override - public ChronoLocalDate resolveDate(Map fieldValues, ResolverStyle resolverStyle) { + public @Nullable ChronoLocalDate resolveDate(Map fieldValues, ResolverStyle resolverStyle) { // check epoch-day before inventing era if (fieldValues.containsKey(EPOCH_DAY)) { return dateEpochDay(fieldValues.remove(EPOCH_DAY)); @@ -678,8 +681,6 @@ public int compareTo(Chronology other) { * @return true if this is equal to the other chronology */ @Override - - public boolean equals(@Nullable Object obj) { if (this == obj) { return true; diff --git a/src/java.base/share/classes/java/time/chrono/Chronology.java b/src/java.base/share/classes/java/time/chrono/Chronology.java index f573155ae21..4939f8045ff 100644 --- a/src/java.base/share/classes/java/time/chrono/Chronology.java +++ b/src/java.base/share/classes/java/time/chrono/Chronology.java @@ -88,6 +88,8 @@ import java.util.Map; import java.util.Objects; import java.util.Set; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; /** * A calendar system, used to organize and identify dates. @@ -161,6 +163,7 @@ * * @since 1.8 */ +@NullMarked public interface Chronology extends Comparable { /** @@ -295,7 +298,7 @@ static Set getAvailableChronologies() { * @return the calendar system type, null if the calendar is not defined by CLDR/LDML * @see #getId() */ - String getCalendarType(); + @Nullable String getCalendarType(); //----------------------------------------------------------------------- /** @@ -684,7 +687,7 @@ public R query(TemporalQuery query) { * @throws DateTimeException if the date cannot be resolved, typically * because of a conflict in the input data */ - ChronoLocalDate resolveDate(Map fieldValues, ResolverStyle resolverStyle); + @Nullable ChronoLocalDate resolveDate(Map fieldValues, ResolverStyle resolverStyle); //----------------------------------------------------------------------- /** @@ -823,7 +826,7 @@ default boolean isIsoBased() { * @return true if this is equal to the other chronology */ @Override - boolean equals(Object obj); + boolean equals(@Nullable Object obj); /** * A hash code for this chronology.