From a5b2b2f673f173b7b88ab32fd822016dcbb217dd Mon Sep 17 00:00:00 2001 From: Chris Povirk Date: Tue, 13 Oct 2026 14:58:28 -0400 Subject: [PATCH] Add `@Nullable` to some `equals` parameters. I didn't run https://errorprone.info/bugpattern/EqualsMissingNullable (yet? :)), just https://errorprone.info/bugpattern/ParameterMissingNullable. As usual, adding `@Nullable` to parameters [doesn't usually directly buy us a _lot_](https://github.com/jspecify/jdk/pull/171) (especially for `equals`), but it can be useful. It also gets these off my radar for when I'm trying to cover more interesting parameter cases. --- .../share/classes/java/lang/constant/DynamicCallSiteDesc.java | 3 ++- src/java.base/share/classes/java/text/ChoiceFormat.java | 3 ++- src/java.base/share/classes/java/text/DateFormatSymbols.java | 3 ++- .../share/classes/java/text/DecimalFormatSymbols.java | 3 ++- src/java.base/share/classes/java/text/NumberFormat.java | 3 ++- 5 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/java.base/share/classes/java/lang/constant/DynamicCallSiteDesc.java b/src/java.base/share/classes/java/lang/constant/DynamicCallSiteDesc.java index 6969738d652..7365b544bec 100644 --- a/src/java.base/share/classes/java/lang/constant/DynamicCallSiteDesc.java +++ b/src/java.base/share/classes/java/lang/constant/DynamicCallSiteDesc.java @@ -30,6 +30,7 @@ import java.util.Arrays; import java.util.Objects; import java.util.stream.Stream; +import org.jspecify.annotations.Nullable; import static java.lang.constant.ConstantDescs.CD_String; import static java.util.Objects.requireNonNull; @@ -258,7 +259,7 @@ public CallSite resolveCallSiteDesc(MethodHandles.Lookup lookup) throws Throwabl * is equal to this {@code DynamicCallSiteDesc}. */ @Override - public final boolean equals(Object o) { + public final boolean equals(@Nullable Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; DynamicCallSiteDesc specifier = (DynamicCallSiteDesc) o; diff --git a/src/java.base/share/classes/java/text/ChoiceFormat.java b/src/java.base/share/classes/java/text/ChoiceFormat.java index 560f3017824..46d12fc40f4 100644 --- a/src/java.base/share/classes/java/text/ChoiceFormat.java +++ b/src/java.base/share/classes/java/text/ChoiceFormat.java @@ -44,6 +44,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Objects; +import org.jspecify.annotations.Nullable; /** * {@code ChoiceFormat} is a concrete subclass of {@code NumberFormat} that @@ -733,7 +734,7 @@ public String toString() { * @see Object#equals(Object) */ @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (this == obj) // quick check return true; if (obj == null || getClass() != obj.getClass()) diff --git a/src/java.base/share/classes/java/text/DateFormatSymbols.java b/src/java.base/share/classes/java/text/DateFormatSymbols.java index c8542ff17ee..b01d77d6c47 100644 --- a/src/java.base/share/classes/java/text/DateFormatSymbols.java +++ b/src/java.base/share/classes/java/text/DateFormatSymbols.java @@ -49,6 +49,7 @@ import java.util.ResourceBundle; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; +import org.jspecify.annotations.Nullable; import sun.util.locale.provider.CalendarDataUtility; import sun.util.locale.provider.LocaleProviderAdapter; import sun.util.locale.provider.LocaleServiceProviderPool; @@ -687,7 +688,7 @@ public int hashCode() { * @see Object#equals(Object) */ @Override - public boolean equals(Object obj) + public boolean equals(@Nullable Object obj) { if (this == obj) return true; if (obj == null || getClass() != obj.getClass()) return false; diff --git a/src/java.base/share/classes/java/text/DecimalFormatSymbols.java b/src/java.base/share/classes/java/text/DecimalFormatSymbols.java index fe512e9cc26..bca5602a275 100644 --- a/src/java.base/share/classes/java/text/DecimalFormatSymbols.java +++ b/src/java.base/share/classes/java/text/DecimalFormatSymbols.java @@ -46,6 +46,7 @@ import java.util.Currency; import java.util.Locale; import java.util.Objects; +import org.jspecify.annotations.Nullable; import sun.util.locale.provider.CalendarDataUtility; import sun.util.locale.provider.LocaleProviderAdapter; import sun.util.locale.provider.LocaleServiceProviderPool; @@ -762,7 +763,7 @@ public Object clone() { * @see Object#equals(Object) */ @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (this == obj) return true; if (obj == null || getClass() != obj.getClass()) return false; DecimalFormatSymbols other = (DecimalFormatSymbols) obj; diff --git a/src/java.base/share/classes/java/text/NumberFormat.java b/src/java.base/share/classes/java/text/NumberFormat.java index afdba76d1ed..50d762433f7 100644 --- a/src/java.base/share/classes/java/text/NumberFormat.java +++ b/src/java.base/share/classes/java/text/NumberFormat.java @@ -52,6 +52,7 @@ import java.util.Objects; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; +import org.jspecify.annotations.Nullable; import sun.util.locale.provider.LocaleProviderAdapter; import sun.util.locale.provider.LocaleServiceProviderPool; @@ -864,7 +865,7 @@ public int hashCode() { * @see Object#equals(Object) */ @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (this == obj) { return true; }