You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@solr.apache.org by kr...@apache.org on 2022/10/26 18:21:22 UTC

[solr] 03/09: SOLR-16427: Evaluate and fix errorprone rules - EqualsGetClass

This is an automated email from the ASF dual-hosted git repository.

krisden pushed a commit to branch branch_9x
in repository https://gitbox.apache.org/repos/asf/solr.git

commit c4663233c00998f7900984b7ab761b19e904db5a
Author: Kevin Risden <kr...@apache.org>
AuthorDate: Sun Oct 23 04:34:23 2022 -0400

    SOLR-16427: Evaluate and fix errorprone rules - EqualsGetClass
---
 gradle/validation/error-prone.gradle               |  1 -
 .../solr/bench/generators/RandomDataHistogram.java |  2 +-
 .../src/java/org/apache/solr/api/AnnotatedApi.java |  2 +-
 .../org/apache/solr/cloud/OverseerTaskQueue.java   |  9 ++--
 .../solr/cloud/RecoveringCoreTermWatcher.java      |  3 +-
 .../java/org/apache/solr/cloud/ZkController.java   | 14 ++----
 .../solr/cloud/api/collections/RoutedAlias.java    |  2 +-
 .../solr/cluster/placement/impl/MetricImpl.java    |  2 +-
 .../cluster/placement/impl/NodeMetricImpl.java     |  2 +-
 .../impl/SimpleClusterAbstractionsImpl.java        | 15 ++----
 .../src/java/org/apache/solr/core/CoreSorter.java  |  2 +-
 .../java/org/apache/solr/core/backup/BackupId.java |  2 +-
 .../java/org/apache/solr/core/backup/Checksum.java |  2 +-
 .../apache/solr/handler/component/ShardDoc.java    |  8 ++--
 .../handler/designer/SchemaDesignerSettings.java   |  2 +-
 .../org/apache/solr/handler/export/SortDoc.java    |  2 +-
 .../org/apache/solr/legacy/BBoxValueSource.java    |  6 +--
 .../org/apache/solr/legacy/LegacyFieldType.java    |  5 +-
 .../solr/legacy/LegacyNumericRangeQuery.java       |  6 +--
 .../solr/legacy/LegacyNumericTokenStream.java      |  6 +--
 .../org/apache/solr/metrics/SolrMetricInfo.java    | 10 ++--
 .../src/java/org/apache/solr/schema/BoolField.java |  3 +-
 .../org/apache/solr/schema/CurrencyFieldType.java  | 25 ++++------
 .../solr/schema/FileExchangeRateProvider.java      |  5 +-
 .../solr/schema/LatLonPointSpatialField.java       |  2 +-
 .../solr/schema/OpenExchangeRatesOrgProvider.java  |  6 +--
 .../solr/schema/RptWithGeometrySpatialField.java   | 10 ++--
 .../solr/search/FloatPayloadValueSource.java       | 17 +++----
 .../org/apache/solr/search/HashQParserPlugin.java  |  4 +-
 .../solr/search/IGainTermsQParserPlugin.java       |  6 +--
 .../solr/search/SignificantTermsQParserPlugin.java |  6 +--
 .../org/apache/solr/search/SolrIndexSearcher.java  |  2 +-
 .../org/apache/solr/search/ValueSourceParser.java  |  6 +--
 .../apache/solr/search/facet/AggValueSource.java   |  3 +-
 .../apache/solr/search/facet/RelatednessAgg.java   |  4 +-
 .../solr/search/facet/SimpleAggValueSource.java    |  6 +--
 .../search/function/CollapseScoreFunction.java     |  6 +--
 .../solr/search/function/DualDoubleFunction.java   |  5 +-
 .../solr/search/function/FileFloatSource.java      |  2 +-
 .../solr/search/function/MultiStringFunction.java  |  5 +-
 .../solr/search/function/OrdFieldSource.java       |  4 +-
 .../search/function/ReverseOrdFieldSource.java     |  2 +-
 .../search/function/ValueSourceRangeFilter.java    | 18 +++-----
 .../distance/GeohashHaversineFunction.java         | 11 +++--
 .../function/distance/HaversineFunction.java       | 11 +++--
 .../search/join/ChildFieldValueSourceParser.java   | 17 ++-----
 .../solr/search/join/ScoreJoinQParserPlugin.java   |  9 ++--
 .../org/apache/solr/security/BasicAuthPlugin.java  |  2 +-
 .../apache/solr/servlet/CoreContainerProvider.java |  2 +-
 .../apache/solr/spelling/PossibilityIterator.java  |  8 ++--
 .../java/org/apache/solr/spelling/ResultEntry.java | 16 +++----
 .../src/java/org/apache/solr/spelling/Token.java   | 10 ++--
 .../org/apache/solr/update/SolrCmdDistributor.java | 32 ++++---------
 .../placement/ClusterAbstractionsForTest.java      | 33 +++-----------
 .../component/DistributedFacetPivotSmallTest.java  |  6 +--
 .../solr/security/PrincipalWithUserRoles.java      |  3 +-
 .../solr/hdfs/store/blockcache/BlockCacheKey.java  | 12 ++---
 .../org/apache/solr/security/jwt/JWTPrincipal.java |  2 +-
 .../org/apache/solr/ltr/model/LTRScoringModel.java | 53 +++-------------------
 .../org/apache/solr/ltr/model/WrapperModel.java    | 12 ++---
 .../prometheus/exporter/MetricsQueryTemplate.java  |  2 +-
 .../solr/client/solrj/cloud/VersionedData.java     |  2 +-
 .../solr/client/solrj/io/comp/FieldComparator.java |  2 +-
 .../solrj/io/comp/MultipleFieldComparator.java     |  2 +-
 .../solrj/io/stream/expr/StreamExpression.java     |  6 +--
 .../expr/StreamExpressionNamedParameter.java       |  4 +-
 .../io/stream/expr/StreamExpressionValue.java      |  2 +-
 .../client/solrj/io/stream/expr/StreamFactory.java |  3 +-
 .../org/apache/solr/common/cloud/ClusterState.java |  3 +-
 .../org/apache/solr/common/cloud/DocRouter.java    |  2 +-
 .../java/org/apache/solr/common/cloud/Replica.java |  2 +-
 solr/solrj/src/test/org/noggit/TestJSONParser.java |  2 +-
 .../src/java/org/apache/solr/SolrTestCaseJ4.java   |  3 +-
 .../solr/cloud/AbstractFullDistribZkTestBase.java  | 17 ++-----
 74 files changed, 194 insertions(+), 347 deletions(-)

diff --git a/gradle/validation/error-prone.gradle b/gradle/validation/error-prone.gradle
index 73a5f7bb575..a97b42fa4e2 100644
--- a/gradle/validation/error-prone.gradle
+++ b/gradle/validation/error-prone.gradle
@@ -83,7 +83,6 @@ allprojects { prj ->
             '-Xep:ComplexBooleanConstant:OFF',
             '-Xep:DoubleCheckedLocking:OFF',
             '-Xep:EmptyCatch:OFF',
-            '-Xep:EqualsGetClass:OFF',
             '-Xep:EqualsUnsafeCast:OFF',
             '-Xep:EscapedEntity:OFF',
             '-Xep:Finally:OFF',
diff --git a/solr/benchmark/src/java/org/apache/solr/bench/generators/RandomDataHistogram.java b/solr/benchmark/src/java/org/apache/solr/bench/generators/RandomDataHistogram.java
index 947db5a253e..0f9062331ef 100644
--- a/solr/benchmark/src/java/org/apache/solr/bench/generators/RandomDataHistogram.java
+++ b/solr/benchmark/src/java/org/apache/solr/bench/generators/RandomDataHistogram.java
@@ -436,7 +436,7 @@ public class RandomDataHistogram {
       @Override
       public boolean equals(Object o) {
         if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
+        if (!(o instanceof Surrogate)) return false;
         Surrogate surrogate = (Surrogate) o;
         return hashCode.equals(surrogate.hashCode)
             && identityHashcode.equals(surrogate.identityHashcode);
diff --git a/solr/core/src/java/org/apache/solr/api/AnnotatedApi.java b/solr/core/src/java/org/apache/solr/api/AnnotatedApi.java
index 12337c0e4c7..072eb246b10 100644
--- a/solr/core/src/java/org/apache/solr/api/AnnotatedApi.java
+++ b/solr/core/src/java/org/apache/solr/api/AnnotatedApi.java
@@ -353,7 +353,7 @@ public class AnnotatedApi extends Api implements PermissionNameProvider, Closeab
     public boolean equals(Object rhs) {
       if (null == rhs) return false;
       if (this == rhs) return true;
-      if (getClass() != rhs.getClass()) return false;
+      if (!(rhs instanceof Cmd)) return false;
 
       final Cmd rhsCast = (Cmd) rhs;
       return new EqualsBuilder()
diff --git a/solr/core/src/java/org/apache/solr/cloud/OverseerTaskQueue.java b/solr/core/src/java/org/apache/solr/cloud/OverseerTaskQueue.java
index b14b4834a91..10137e5416e 100644
--- a/solr/core/src/java/org/apache/solr/cloud/OverseerTaskQueue.java
+++ b/solr/core/src/java/org/apache/solr/cloud/OverseerTaskQueue.java
@@ -20,6 +20,7 @@ import com.codahale.metrics.Timer;
 import java.lang.invoke.MethodHandles;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 import java.util.TreeSet;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
@@ -317,13 +318,9 @@ public class OverseerTaskQueue extends ZkDistributedQueue {
     @Override
     public boolean equals(Object obj) {
       if (this == obj) return true;
-      if (obj == null) return false;
-      if (getClass() != obj.getClass()) return false;
+      if (!(obj instanceof QueueEvent)) return false;
       QueueEvent other = (QueueEvent) obj;
-      if (id == null) {
-        if (other.id != null) return false;
-      } else if (!id.equals(other.id)) return false;
-      return true;
+      return Objects.equals(id, other.id);
     }
 
     private WatchedEvent event = null;
diff --git a/solr/core/src/java/org/apache/solr/cloud/RecoveringCoreTermWatcher.java b/solr/core/src/java/org/apache/solr/cloud/RecoveringCoreTermWatcher.java
index addcb71275a..1821600fc83 100644
--- a/solr/core/src/java/org/apache/solr/cloud/RecoveringCoreTermWatcher.java
+++ b/solr/core/src/java/org/apache/solr/cloud/RecoveringCoreTermWatcher.java
@@ -76,10 +76,9 @@ public class RecoveringCoreTermWatcher implements ZkShardTerms.CoreTermWatcher {
   @Override
   public boolean equals(Object o) {
     if (this == o) return true;
-    if (o == null || getClass() != o.getClass()) return false;
+    if (!(o instanceof RecoveringCoreTermWatcher)) return false;
 
     RecoveringCoreTermWatcher that = (RecoveringCoreTermWatcher) o;
-
     return coreDescriptor.getName().equals(that.coreDescriptor.getName());
   }
 
diff --git a/solr/core/src/java/org/apache/solr/cloud/ZkController.java b/solr/core/src/java/org/apache/solr/cloud/ZkController.java
index 47ac97e1f8b..3ff0a309058 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ZkController.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ZkController.java
@@ -186,16 +186,10 @@ public class ZkController implements Closeable {
     @Override
     public boolean equals(Object obj) {
       if (this == obj) return true;
-      if (obj == null) return false;
-      if (getClass() != obj.getClass()) return false;
+      if (!(obj instanceof ContextKey)) return false;
       ContextKey other = (ContextKey) obj;
-      if (collection == null) {
-        if (other.collection != null) return false;
-      } else if (!collection.equals(other.collection)) return false;
-      if (coreNodeName == null) {
-        if (other.coreNodeName != null) return false;
-      } else if (!coreNodeName.equals(other.coreNodeName)) return false;
-      return true;
+      return Objects.equals(collection, other.collection)
+          && Objects.equals(coreNodeName, other.coreNodeName);
     }
 
     @Override
@@ -2884,7 +2878,7 @@ public class ZkController implements Closeable {
     @Override
     public boolean equals(Object o) {
       if (this == o) return true;
-      if (o == null || getClass() != o.getClass()) return false;
+      if (!(o instanceof UnloadCoreOnDeletedWatcher)) return false;
       UnloadCoreOnDeletedWatcher that = (UnloadCoreOnDeletedWatcher) o;
       return Objects.equals(coreNodeName, that.coreNodeName)
           && Objects.equals(shard, that.shard)
diff --git a/solr/core/src/java/org/apache/solr/cloud/api/collections/RoutedAlias.java b/solr/core/src/java/org/apache/solr/cloud/api/collections/RoutedAlias.java
index 7d46eba3276..1c196dd427e 100644
--- a/solr/core/src/java/org/apache/solr/cloud/api/collections/RoutedAlias.java
+++ b/solr/core/src/java/org/apache/solr/cloud/api/collections/RoutedAlias.java
@@ -488,7 +488,7 @@ public abstract class RoutedAlias {
     @Override
     public boolean equals(Object o) {
       if (this == o) return true;
-      if (o == null || getClass() != o.getClass()) return false;
+      if (!(o instanceof Action)) return false;
       Action action = (Action) o;
       return Objects.equals(sourceAlias, action.sourceAlias)
           && actionType == action.actionType
diff --git a/solr/core/src/java/org/apache/solr/cluster/placement/impl/MetricImpl.java b/solr/core/src/java/org/apache/solr/cluster/placement/impl/MetricImpl.java
index 0c6791bf708..caee316952c 100644
--- a/solr/core/src/java/org/apache/solr/cluster/placement/impl/MetricImpl.java
+++ b/solr/core/src/java/org/apache/solr/cluster/placement/impl/MetricImpl.java
@@ -115,7 +115,7 @@ public abstract class MetricImpl<T> implements Metric<T> {
     if (this == o) {
       return true;
     }
-    if (o == null || getClass() != o.getClass()) {
+    if (!(o instanceof MetricImpl)) {
       return false;
     }
     MetricImpl<?> that = (MetricImpl<?>) o;
diff --git a/solr/core/src/java/org/apache/solr/cluster/placement/impl/NodeMetricImpl.java b/solr/core/src/java/org/apache/solr/cluster/placement/impl/NodeMetricImpl.java
index 9da286faeae..f5f9cd8dbd6 100644
--- a/solr/core/src/java/org/apache/solr/cluster/placement/impl/NodeMetricImpl.java
+++ b/solr/core/src/java/org/apache/solr/cluster/placement/impl/NodeMetricImpl.java
@@ -85,7 +85,7 @@ public class NodeMetricImpl<T> extends MetricImpl<T> implements NodeMetric<T> {
     if (this == o) {
       return true;
     }
-    if (o == null || getClass() != o.getClass()) {
+    if (!(o instanceof NodeMetricImpl)) {
       return false;
     }
     if (!super.equals(o)) {
diff --git a/solr/core/src/java/org/apache/solr/cluster/placement/impl/SimpleClusterAbstractionsImpl.java b/solr/core/src/java/org/apache/solr/cluster/placement/impl/SimpleClusterAbstractionsImpl.java
index bfd6ff77f7f..3fede98a576 100644
--- a/solr/core/src/java/org/apache/solr/cluster/placement/impl/SimpleClusterAbstractionsImpl.java
+++ b/solr/core/src/java/org/apache/solr/cluster/placement/impl/SimpleClusterAbstractionsImpl.java
@@ -135,13 +135,10 @@ class SimpleClusterAbstractionsImpl {
      */
     @Override
     public boolean equals(Object obj) {
-      if (obj == null) {
-        return false;
-      }
       if (obj == this) {
         return true;
       }
-      if (obj.getClass() != getClass()) {
+      if (!(obj instanceof NodeImpl)) {
         return false;
       }
       NodeImpl other = (NodeImpl) obj;
@@ -305,13 +302,10 @@ class SimpleClusterAbstractionsImpl {
 
     @Override
     public boolean equals(Object obj) {
-      if (obj == null) {
-        return false;
-      }
       if (obj == this) {
         return true;
       }
-      if (obj.getClass() != getClass()) {
+      if (!(obj instanceof ShardImpl)) {
         return false;
       }
       ShardImpl other = (ShardImpl) obj;
@@ -468,13 +462,10 @@ class SimpleClusterAbstractionsImpl {
 
     @Override
     public boolean equals(Object obj) {
-      if (obj == null) {
-        return false;
-      }
       if (obj == this) {
         return true;
       }
-      if (obj.getClass() != getClass()) {
+      if (!(obj instanceof ReplicaImpl)) {
         return false;
       }
       ReplicaImpl other = (ReplicaImpl) obj;
diff --git a/solr/core/src/java/org/apache/solr/core/CoreSorter.java b/solr/core/src/java/org/apache/solr/core/CoreSorter.java
index 1eb59422b53..c90a3d6540a 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreSorter.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreSorter.java
@@ -155,7 +155,7 @@ public final class CoreSorter implements Comparator<CoreDescriptor> {
     @Override
     public boolean equals(Object o) {
       if (this == o) return true;
-      if (o == null || getClass() != o.getClass()) return false;
+      if (!(o instanceof CountsForEachShard)) return false;
       CountsForEachShard that = (CountsForEachShard) o;
       return totalReplicasInDownNodes == that.totalReplicasInDownNodes
           && myReplicas == that.myReplicas
diff --git a/solr/core/src/java/org/apache/solr/core/backup/BackupId.java b/solr/core/src/java/org/apache/solr/core/backup/BackupId.java
index 8d1e2faff75..3effa11b4e8 100644
--- a/solr/core/src/java/org/apache/solr/core/backup/BackupId.java
+++ b/solr/core/src/java/org/apache/solr/core/backup/BackupId.java
@@ -62,7 +62,7 @@ public class BackupId implements Comparable<BackupId> {
   @Override
   public boolean equals(Object o) {
     if (this == o) return true;
-    if (o == null || getClass() != o.getClass()) return false;
+    if (!(o instanceof BackupId)) return false;
     BackupId backupId = (BackupId) o;
     return id == backupId.id;
   }
diff --git a/solr/core/src/java/org/apache/solr/core/backup/Checksum.java b/solr/core/src/java/org/apache/solr/core/backup/Checksum.java
index 6e97537ef03..888c6489b1d 100644
--- a/solr/core/src/java/org/apache/solr/core/backup/Checksum.java
+++ b/solr/core/src/java/org/apache/solr/core/backup/Checksum.java
@@ -32,7 +32,7 @@ public class Checksum {
   @Override
   public boolean equals(Object o) {
     if (this == o) return true;
-    if (o == null || getClass() != o.getClass()) return false;
+    if (!(o instanceof Checksum)) return false;
     Checksum checksum = (Checksum) o;
     return size == checksum.size && this.checksum == checksum.checksum;
   }
diff --git a/solr/core/src/java/org/apache/solr/handler/component/ShardDoc.java b/solr/core/src/java/org/apache/solr/handler/component/ShardDoc.java
index 49c8b8824f9..3936e298703 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/ShardDoc.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/ShardDoc.java
@@ -17,6 +17,7 @@
 package org.apache.solr.handler.component;
 
 import java.util.List;
+import java.util.Objects;
 import org.apache.lucene.search.FieldDoc;
 import org.apache.solr.common.util.NamedList;
 
@@ -59,13 +60,10 @@ public class ShardDoc extends FieldDoc {
   @Override
   public boolean equals(Object o) {
     if (this == o) return true;
-    if (o == null || getClass() != o.getClass()) return false;
+    if (!(o instanceof ShardDoc)) return false;
 
     ShardDoc shardDoc = (ShardDoc) o;
-
-    if (id != null ? !id.equals(shardDoc.id) : shardDoc.id != null) return false;
-
-    return true;
+    return Objects.equals(id, shardDoc.id);
   }
 
   @Override
diff --git a/solr/core/src/java/org/apache/solr/handler/designer/SchemaDesignerSettings.java b/solr/core/src/java/org/apache/solr/handler/designer/SchemaDesignerSettings.java
index 5b35160fcc4..4f16464fedd 100644
--- a/solr/core/src/java/org/apache/solr/handler/designer/SchemaDesignerSettings.java
+++ b/solr/core/src/java/org/apache/solr/handler/designer/SchemaDesignerSettings.java
@@ -144,7 +144,7 @@ class SchemaDesignerSettings implements SchemaDesignerConstants {
   @Override
   public boolean equals(Object o) {
     if (this == o) return true;
-    if (o == null || getClass() != o.getClass()) return false;
+    if (!(o instanceof SchemaDesignerSettings)) return false;
     SchemaDesignerSettings that = (SchemaDesignerSettings) o;
     return isDisabled == that.isDisabled
         && dynamicFieldsEnabled == that.dynamicFieldsEnabled
diff --git a/solr/core/src/java/org/apache/solr/handler/export/SortDoc.java b/solr/core/src/java/org/apache/solr/handler/export/SortDoc.java
index 4f0febc19d3..8e770cd371a 100644
--- a/solr/core/src/java/org/apache/solr/handler/export/SortDoc.java
+++ b/solr/core/src/java/org/apache/solr/handler/export/SortDoc.java
@@ -38,7 +38,7 @@ class SortDoc implements Comparable<SortDoc> {
   @Override
   public boolean equals(Object obj) {
     // subclasses are not equal
-    if (!obj.getClass().equals(getClass())) {
+    if (!(obj instanceof SortDoc)) {
       return false;
     }
     return compareTo((SortDoc) obj) == 0;
diff --git a/solr/core/src/java/org/apache/solr/legacy/BBoxValueSource.java b/solr/core/src/java/org/apache/solr/legacy/BBoxValueSource.java
index 762581ad00f..d04f8046004 100644
--- a/solr/core/src/java/org/apache/solr/legacy/BBoxValueSource.java
+++ b/solr/core/src/java/org/apache/solr/legacy/BBoxValueSource.java
@@ -88,13 +88,11 @@ class BBoxValueSource extends ShapeValuesSource {
   @Override
   public boolean equals(Object o) {
     if (this == o) return true;
-    if (o == null || getClass() != o.getClass()) return false;
+    if (!(o instanceof BBoxValueSource)) return false;
 
     BBoxValueSource that = (BBoxValueSource) o;
 
-    if (!strategy.equals(that.strategy)) return false;
-
-    return true;
+    return strategy.equals(that.strategy);
   }
 
   @Override
diff --git a/solr/core/src/java/org/apache/solr/legacy/LegacyFieldType.java b/solr/core/src/java/org/apache/solr/legacy/LegacyFieldType.java
index 1b20bea8771..98199d62b6a 100644
--- a/solr/core/src/java/org/apache/solr/legacy/LegacyFieldType.java
+++ b/solr/core/src/java/org/apache/solr/legacy/LegacyFieldType.java
@@ -114,11 +114,10 @@ public final class LegacyFieldType extends FieldType {
     if (!super.equals(obj)) {
       return false;
     }
-    if (getClass() != obj.getClass()) return false;
+    if (!(obj instanceof LegacyFieldType)) return false;
     LegacyFieldType other = (LegacyFieldType) obj;
     if (numericPrecisionStep != other.numericPrecisionStep) return false;
-    if (numericType != other.numericType) return false;
-    return true;
+    return numericType == other.numericType;
   }
 
   /** Prints a Field for human consumption. */
diff --git a/solr/core/src/java/org/apache/solr/legacy/LegacyNumericRangeQuery.java b/solr/core/src/java/org/apache/solr/legacy/LegacyNumericRangeQuery.java
index 063b474eb7c..66c5abe05d6 100644
--- a/solr/core/src/java/org/apache/solr/legacy/LegacyNumericRangeQuery.java
+++ b/solr/core/src/java/org/apache/solr/legacy/LegacyNumericRangeQuery.java
@@ -424,11 +424,11 @@ public final class LegacyNumericRangeQuery<T extends Number> extends MultiTermQu
     if (!super.equals(o)) return false;
     if (o instanceof LegacyNumericRangeQuery) {
       final LegacyNumericRangeQuery<?> q = (LegacyNumericRangeQuery<?>) o;
-      return ((q.min == null ? min == null : q.min.equals(min))
-          && (q.max == null ? max == null : q.max.equals(max))
+      return Objects.equals(q.min, min)
+          && Objects.equals(q.max, max)
           && minInclusive == q.minInclusive
           && maxInclusive == q.maxInclusive
-          && precisionStep == q.precisionStep);
+          && precisionStep == q.precisionStep;
     }
     return false;
   }
diff --git a/solr/core/src/java/org/apache/solr/legacy/LegacyNumericTokenStream.java b/solr/core/src/java/org/apache/solr/legacy/LegacyNumericTokenStream.java
index adec647c192..d115eb4fcdc 100644
--- a/solr/core/src/java/org/apache/solr/legacy/LegacyNumericTokenStream.java
+++ b/solr/core/src/java/org/apache/solr/legacy/LegacyNumericTokenStream.java
@@ -252,14 +252,12 @@ public final class LegacyNumericTokenStream extends TokenStream {
     @Override
     public boolean equals(Object obj) {
       if (this == obj) return true;
-      if (obj == null) return false;
-      if (getClass() != obj.getClass()) return false;
+      if (!(obj instanceof LegacyNumericTermAttributeImpl)) return false;
       LegacyNumericTermAttributeImpl other = (LegacyNumericTermAttributeImpl) obj;
       if (precisionStep != other.precisionStep) return false;
       if (shift != other.shift) return false;
       if (value != other.value) return false;
-      if (valueSize != other.valueSize) return false;
-      return true;
+      return valueSize == other.valueSize;
     }
   }
 
diff --git a/solr/core/src/java/org/apache/solr/metrics/SolrMetricInfo.java b/solr/core/src/java/org/apache/solr/metrics/SolrMetricInfo.java
index 65deba69cd0..2c8b9aa95cd 100644
--- a/solr/core/src/java/org/apache/solr/metrics/SolrMetricInfo.java
+++ b/solr/core/src/java/org/apache/solr/metrics/SolrMetricInfo.java
@@ -17,6 +17,7 @@
 package org.apache.solr.metrics;
 
 import com.codahale.metrics.MetricRegistry;
+import java.util.Objects;
 import org.apache.solr.core.SolrInfoBean;
 
 /** Wraps meta-data for a metric. */
@@ -93,13 +94,12 @@ public final class SolrMetricInfo {
   @Override
   public boolean equals(Object o) {
     if (this == o) return true;
-    if (o == null || getClass() != o.getClass()) return false;
+    if (!(o instanceof SolrMetricInfo)) return false;
 
     SolrMetricInfo that = (SolrMetricInfo) o;
-
-    if (name != null ? !name.equals(that.name) : that.name != null) return false;
-    if (scope != null ? !scope.equals(that.scope) : that.scope != null) return false;
-    return category == that.category;
+    return Objects.equals(name, that.name)
+        && Objects.equals(scope, that.scope)
+        && category == that.category;
   }
 
   @Override
diff --git a/solr/core/src/java/org/apache/solr/schema/BoolField.java b/solr/core/src/java/org/apache/solr/schema/BoolField.java
index cdaf59aaa5c..b198666cd43 100644
--- a/solr/core/src/java/org/apache/solr/schema/BoolField.java
+++ b/solr/core/src/java/org/apache/solr/schema/BoolField.java
@@ -291,8 +291,7 @@ public class BoolField extends PrimitiveFieldType {
 
     @Override
     public boolean equals(Object o) {
-      return o.getClass() == BoolFieldSource.class
-          && this.field.equals(((BoolFieldSource) o).field);
+      return (o instanceof BoolFieldSource) && this.field.equals(((BoolFieldSource) o).field);
     }
 
     private static final int hcode = OrdFieldSource.class.hashCode();
diff --git a/solr/core/src/java/org/apache/solr/schema/CurrencyFieldType.java b/solr/core/src/java/org/apache/solr/schema/CurrencyFieldType.java
index 9b48ad63e57..03603c9509b 100644
--- a/solr/core/src/java/org/apache/solr/schema/CurrencyFieldType.java
+++ b/solr/core/src/java/org/apache/solr/schema/CurrencyFieldType.java
@@ -23,6 +23,7 @@ import java.util.ArrayList;
 import java.util.Currency;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import org.apache.lucene.document.StoredField;
 import org.apache.lucene.index.IndexableField;
 import org.apache.lucene.index.LeafReaderContext;
@@ -514,22 +515,20 @@ public class CurrencyFieldType extends FieldType implements SchemaAware, Resourc
     @Override
     public boolean equals(Object o) {
       if (this == o) return true;
-      if (o == null || getClass() != o.getClass()) return false;
+      if (!(o instanceof ConvertedCurrencyValueSource)) return false;
 
       ConvertedCurrencyValueSource that = (ConvertedCurrencyValueSource) o;
 
-      return !(source != null ? !source.equals(that.source) : that.source != null)
+      return Objects.equals(source, that.source)
           && (rate == that.rate)
-          && !(targetCurrency != null
-              ? !targetCurrency.equals(that.targetCurrency)
-              : that.targetCurrency != null);
+          && Objects.equals(targetCurrency, that.targetCurrency);
     }
 
     @Override
     public int hashCode() {
       int result = targetCurrency != null ? targetCurrency.hashCode() : 0;
       result = 31 * result + (source != null ? source.hashCode() : 0);
-      result = 31 * (int) Double.doubleToLongBits(rate);
+      result = 31 * result + (int) Double.doubleToLongBits(rate);
       return result;
     }
   }
@@ -728,19 +727,13 @@ public class CurrencyFieldType extends FieldType implements SchemaAware, Resourc
     @Override
     public boolean equals(Object o) {
       if (this == o) return true;
-      if (o == null || getClass() != o.getClass()) return false;
+      if (!(o instanceof RawCurrencyValueSource)) return false;
 
       RawCurrencyValueSource that = (RawCurrencyValueSource) o;
 
-      return !(amountValues != null
-              ? !amountValues.equals(that.amountValues)
-              : that.amountValues != null)
-          && !(currencyValues != null
-              ? !currencyValues.equals(that.currencyValues)
-              : that.currencyValues != null)
-          && !(targetCurrency != null
-              ? !targetCurrency.equals(that.targetCurrency)
-              : that.targetCurrency != null);
+      return Objects.equals(amountValues, that.amountValues)
+          && Objects.equals(currencyValues, that.currencyValues)
+          && Objects.equals(targetCurrency, that.targetCurrency);
     }
 
     @Override
diff --git a/solr/core/src/java/org/apache/solr/schema/FileExchangeRateProvider.java b/solr/core/src/java/org/apache/solr/schema/FileExchangeRateProvider.java
index 2a0b0e5e87f..18318770c1c 100644
--- a/solr/core/src/java/org/apache/solr/schema/FileExchangeRateProvider.java
+++ b/solr/core/src/java/org/apache/solr/schema/FileExchangeRateProvider.java
@@ -22,6 +22,7 @@ import java.lang.invoke.MethodHandles;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Set;
 import javax.xml.xpath.XPath;
 import javax.xml.xpath.XPathConstants;
@@ -131,11 +132,11 @@ public class FileExchangeRateProvider implements ExchangeRateProvider {
   @Override
   public boolean equals(Object o) {
     if (this == o) return true;
-    if (o == null || getClass() != o.getClass()) return false;
+    if (!(o instanceof FileExchangeRateProvider)) return false;
 
     FileExchangeRateProvider that = (FileExchangeRateProvider) o;
 
-    return !(rates != null ? !rates.equals(that.rates) : that.rates != null);
+    return Objects.equals(rates, that.rates);
   }
 
   @Override
diff --git a/solr/core/src/java/org/apache/solr/schema/LatLonPointSpatialField.java b/solr/core/src/java/org/apache/solr/schema/LatLonPointSpatialField.java
index f5bba30093b..b6e3193111a 100644
--- a/solr/core/src/java/org/apache/solr/schema/LatLonPointSpatialField.java
+++ b/solr/core/src/java/org/apache/solr/schema/LatLonPointSpatialField.java
@@ -252,7 +252,7 @@ public class LatLonPointSpatialField
       @Override
       public boolean equals(Object o) {
         if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
+        if (!(o instanceof DistanceSortValueSource)) return false;
         DistanceSortValueSource that = (DistanceSortValueSource) o;
         return Double.compare(that.multiplier, multiplier) == 0
             && Objects.equals(fieldName, that.fieldName)
diff --git a/solr/core/src/java/org/apache/solr/schema/OpenExchangeRatesOrgProvider.java b/solr/core/src/java/org/apache/solr/schema/OpenExchangeRatesOrgProvider.java
index 051273dad35..58e4d9f2f85 100644
--- a/solr/core/src/java/org/apache/solr/schema/OpenExchangeRatesOrgProvider.java
+++ b/solr/core/src/java/org/apache/solr/schema/OpenExchangeRatesOrgProvider.java
@@ -24,6 +24,7 @@ import java.net.URL;
 import java.nio.charset.StandardCharsets;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Set;
 import org.apache.lucene.util.ResourceLoader;
 import org.apache.solr.common.SolrException;
@@ -121,11 +122,10 @@ public class OpenExchangeRatesOrgProvider implements ExchangeRateProvider {
   @Override
   public boolean equals(Object o) {
     if (this == o) return true;
-    if (o == null || getClass() != o.getClass()) return false;
+    if (!(o instanceof OpenExchangeRatesOrgProvider)) return false;
 
     OpenExchangeRatesOrgProvider that = (OpenExchangeRatesOrgProvider) o;
-
-    return !(rates != null ? !rates.equals(that.rates) : that.rates != null);
+    return Objects.equals(rates, that.rates);
   }
 
   @Override
diff --git a/solr/core/src/java/org/apache/solr/schema/RptWithGeometrySpatialField.java b/solr/core/src/java/org/apache/solr/schema/RptWithGeometrySpatialField.java
index 64188a93975..ce9a7e04669 100644
--- a/solr/core/src/java/org/apache/solr/schema/RptWithGeometrySpatialField.java
+++ b/solr/core/src/java/org/apache/solr/schema/RptWithGeometrySpatialField.java
@@ -20,6 +20,7 @@ import java.io.IOException;
 import java.lang.ref.WeakReference;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Objects;
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.LeafReaderContext;
@@ -133,12 +134,11 @@ public class RptWithGeometrySpatialField
     @Override
     public boolean equals(Object o) {
       if (this == o) return true;
-      if (o == null || getClass() != o.getClass()) return false;
+      if (!(o instanceof CachingShapeValuesource)) return false;
 
       CachingShapeValuesource that = (CachingShapeValuesource) o;
-
-      if (!targetValueSource.equals(that.targetValueSource)) return false;
-      return fieldName.equals(that.fieldName);
+      return Objects.equals(targetValueSource, that.targetValueSource)
+          && Objects.equals(fieldName, that.fieldName);
     }
 
     @Override
@@ -217,7 +217,7 @@ public class RptWithGeometrySpatialField
     @Override
     public boolean equals(Object o) {
       if (this == o) return true;
-      if (o == null || getClass() != o.getClass()) return false;
+      if (!(o instanceof PerSegCacheKey)) return false;
 
       PerSegCacheKey that = (PerSegCacheKey) o;
 
diff --git a/solr/core/src/java/org/apache/solr/search/FloatPayloadValueSource.java b/solr/core/src/java/org/apache/solr/search/FloatPayloadValueSource.java
index 97122163b59..d6572edd31d 100644
--- a/solr/core/src/java/org/apache/solr/search/FloatPayloadValueSource.java
+++ b/solr/core/src/java/org/apache/solr/search/FloatPayloadValueSource.java
@@ -19,6 +19,7 @@ package org.apache.solr.search;
 
 import java.io.IOException;
 import java.util.Map;
+import java.util.Objects;
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.index.PostingsEnum;
 import org.apache.lucene.index.Terms;
@@ -220,18 +221,14 @@ public class FloatPayloadValueSource extends ValueSource {
   @Override
   public boolean equals(Object o) {
     if (this == o) return true;
-    if (o == null || getClass() != o.getClass()) return false;
+    if (!(o instanceof FloatPayloadValueSource)) return false;
 
     FloatPayloadValueSource that = (FloatPayloadValueSource) o;
-
-    if (!indexedField.equals(that.indexedField)) return false;
-    if (indexedBytes != null ? !indexedBytes.equals(that.indexedBytes) : that.indexedBytes != null)
-      return false;
-    if (!decoder.equals(that.decoder)) return false;
-    if (payloadFunction != null
-        ? !payloadFunction.equals(that.payloadFunction)
-        : that.payloadFunction != null) return false;
-    return defaultValueSource.equals(that.defaultValueSource);
+    return Objects.equals(indexedField, that.indexedField)
+        && Objects.equals(indexedBytes, that.indexedBytes)
+        && Objects.equals(decoder, that.decoder)
+        && Objects.equals(payloadFunction, that.payloadFunction)
+        && Objects.equals(defaultValueSource, that.defaultValueSource);
   }
 
   @Override
diff --git a/solr/core/src/java/org/apache/solr/search/HashQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/HashQParserPlugin.java
index 1438edeabfd..89c012654ee 100644
--- a/solr/core/src/java/org/apache/solr/search/HashQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/HashQParserPlugin.java
@@ -193,7 +193,7 @@ public class HashQParserPlugin extends QParserPlugin {
     @Override
     public boolean equals(Object o) {
       if (this == o) return true;
-      if (o == null || getClass() != o.getClass()) return false;
+      if (!(o instanceof HashCodeValuesSource)) return false;
       HashCodeValuesSource that = (HashCodeValuesSource) o;
       return Arrays.equals(fields, that.fields);
     }
@@ -240,7 +240,7 @@ public class HashQParserPlugin extends QParserPlugin {
     @Override
     public boolean equals(Object o) {
       if (this == o) return true;
-      if (o == null || getClass() != o.getClass()) return false;
+      if (!(o instanceof HashPartitionPredicate)) return false;
       HashPartitionPredicate that = (HashPartitionPredicate) o;
       return workers == that.workers && worker == that.worker;
     }
diff --git a/solr/core/src/java/org/apache/solr/search/IGainTermsQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/IGainTermsQParserPlugin.java
index 18e48191810..74b31fe04cd 100644
--- a/solr/core/src/java/org/apache/solr/search/IGainTermsQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/IGainTermsQParserPlugin.java
@@ -18,6 +18,7 @@
 package org.apache.solr.search;
 
 import java.io.IOException;
+import java.util.Objects;
 import java.util.TreeSet;
 import org.apache.lucene.index.LeafReader;
 import org.apache.lucene.index.LeafReaderContext;
@@ -229,10 +230,9 @@ public class IGainTermsQParserPlugin extends QParserPlugin {
 
     @Override
     public boolean equals(Object obj) {
-      if (obj == null) return false;
-      if (obj.getClass() != getClass()) return false;
+      if (!(obj instanceof TermWithScore)) return false;
       TermWithScore other = (TermWithScore) obj;
-      return other.term.equals(this.term);
+      return Objects.equals(this.term, other.term);
     }
 
     @Override
diff --git a/solr/core/src/java/org/apache/solr/search/SignificantTermsQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/SignificantTermsQParserPlugin.java
index c5b958059cd..2488df85e5b 100644
--- a/solr/core/src/java/org/apache/solr/search/SignificantTermsQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/SignificantTermsQParserPlugin.java
@@ -21,6 +21,7 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Objects;
 import java.util.TreeSet;
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.index.PostingsEnum;
@@ -290,10 +291,9 @@ public class SignificantTermsQParserPlugin extends QParserPlugin {
 
     @Override
     public boolean equals(Object obj) {
-      if (obj == null) return false;
-      if (obj.getClass() != getClass()) return false;
+      if (!(obj instanceof TermWithScore)) return false;
       TermWithScore other = (TermWithScore) obj;
-      return other.term.equals(this.term);
+      return Objects.equals(this.term, other.term);
     }
 
     @Override
diff --git a/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java b/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
index ca084cc75c6..86d5f549e3c 100644
--- a/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
+++ b/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
@@ -1978,7 +1978,7 @@ public class SolrIndexSearcher extends IndexSearcher implements Closeable, SolrI
 
       TopDocs topDocs = topCollector.topDocs(0, len);
       if (cmd.getSort() != null
-          && cmd.getQuery() instanceof RankQuery == false
+          && !(cmd.getQuery() instanceof RankQuery)
           && (cmd.getFlags() & GET_SCORES) != 0) {
         TopFieldCollector.populateScores(topDocs.scoreDocs, this, query);
       }
diff --git a/solr/core/src/java/org/apache/solr/search/ValueSourceParser.java b/solr/core/src/java/org/apache/solr/search/ValueSourceParser.java
index 89309db4ce8..43600f9ac9e 100644
--- a/solr/core/src/java/org/apache/solr/search/ValueSourceParser.java
+++ b/solr/core/src/java/org/apache/solr/search/ValueSourceParser.java
@@ -1586,7 +1586,7 @@ public abstract class ValueSourceParser implements NamedListInitializedPlugin {
 
     @Override
     public boolean equals(Object o) {
-      if (LongConstValueSource.class != o.getClass()) return false;
+      if (!(o instanceof LongConstValueSource)) return false;
       LongConstValueSource other = (LongConstValueSource) o;
       return this.constant == other.constant;
     }
@@ -1739,7 +1739,7 @@ public abstract class ValueSourceParser implements NamedListInitializedPlugin {
 
       @Override
       public boolean equals(Object o) {
-        if (this.getClass() != o.getClass()) return false;
+        if (!(o instanceof Function)) return false;
         Function other = (Function) o;
         return this.a.equals(other.a) && this.b.equals(other.b);
       }
@@ -1779,7 +1779,7 @@ public abstract class ValueSourceParser implements NamedListInitializedPlugin {
 
     @Override
     public boolean equals(Object o) {
-      if (BoolConstValueSource.class != o.getClass()) return false;
+      if (!(o instanceof BoolConstValueSource)) return false;
       BoolConstValueSource other = (BoolConstValueSource) o;
       return this.constant == other.constant;
     }
diff --git a/solr/core/src/java/org/apache/solr/search/facet/AggValueSource.java b/solr/core/src/java/org/apache/solr/search/facet/AggValueSource.java
index 37e74e097f5..9a31ca980f1 100644
--- a/solr/core/src/java/org/apache/solr/search/facet/AggValueSource.java
+++ b/solr/core/src/java/org/apache/solr/search/facet/AggValueSource.java
@@ -18,6 +18,7 @@ package org.apache.solr.search.facet;
 
 import java.io.IOException;
 import java.util.Map;
+import java.util.Objects;
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.queries.function.FunctionValues;
 import org.apache.lucene.queries.function.ValueSource;
@@ -39,7 +40,7 @@ public abstract class AggValueSource extends ValueSource {
 
   @Override
   public boolean equals(Object o) {
-    return this.getClass() == o.getClass() && name.equals(((AggValueSource) o).name);
+    return (o instanceof AggValueSource) && Objects.equals(name, ((AggValueSource) o).name);
   }
 
   @Override
diff --git a/solr/core/src/java/org/apache/solr/search/facet/RelatednessAgg.java b/solr/core/src/java/org/apache/solr/search/facet/RelatednessAgg.java
index edcc9ae6df7..3c358785f40 100644
--- a/solr/core/src/java/org/apache/solr/search/facet/RelatednessAgg.java
+++ b/solr/core/src/java/org/apache/solr/search/facet/RelatednessAgg.java
@@ -118,7 +118,7 @@ public class RelatednessAgg extends AggValueSource {
 
   @Override
   public boolean equals(Object o) {
-    if (!Objects.equals(this.getClass(), o.getClass())) {
+    if (!(o instanceof RelatednessAgg)) {
       return false;
     }
     RelatednessAgg that = (RelatednessAgg) o;
@@ -568,7 +568,7 @@ public class RelatednessAgg extends AggValueSource {
 
     @Override
     public boolean equals(Object other) {
-      if (!Objects.equals(this.getClass(), other.getClass())) {
+      if (!(other instanceof BucketData)) {
         return false;
       }
       BucketData that = (BucketData) other;
diff --git a/solr/core/src/java/org/apache/solr/search/facet/SimpleAggValueSource.java b/solr/core/src/java/org/apache/solr/search/facet/SimpleAggValueSource.java
index 49b98670fb7..c045f02a081 100644
--- a/solr/core/src/java/org/apache/solr/search/facet/SimpleAggValueSource.java
+++ b/solr/core/src/java/org/apache/solr/search/facet/SimpleAggValueSource.java
@@ -18,6 +18,7 @@ package org.apache.solr.search.facet;
 
 import java.io.IOException;
 import java.util.Map;
+import java.util.Objects;
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.queries.function.FunctionValues;
 import org.apache.lucene.queries.function.ValueSource;
@@ -42,10 +43,9 @@ public abstract class SimpleAggValueSource extends AggValueSource {
 
   @Override
   public boolean equals(Object o) {
-    if (!super.equals(o)) return false;
+    if (!(o instanceof SimpleAggValueSource)) return false;
     ValueSource otherArg = ((SimpleAggValueSource) o).arg;
-    if (arg == otherArg) return true;
-    return (arg != null && arg.equals(otherArg));
+    return Objects.equals(arg, otherArg);
   }
 
   @Override
diff --git a/solr/core/src/java/org/apache/solr/search/function/CollapseScoreFunction.java b/solr/core/src/java/org/apache/solr/search/function/CollapseScoreFunction.java
index a25043a2214..9910e543a42 100644
--- a/solr/core/src/java/org/apache/solr/search/function/CollapseScoreFunction.java
+++ b/solr/core/src/java/org/apache/solr/search/function/CollapseScoreFunction.java
@@ -32,11 +32,7 @@ public class CollapseScoreFunction extends ValueSource {
 
   @Override
   public boolean equals(Object o) {
-    if (o instanceof CollapseScoreFunction) {
-      return true;
-    } else {
-      return false;
-    }
+    return o instanceof CollapseScoreFunction;
   }
 
   @Override
diff --git a/solr/core/src/java/org/apache/solr/search/function/DualDoubleFunction.java b/solr/core/src/java/org/apache/solr/search/function/DualDoubleFunction.java
index d92ea9820a1..922851bc495 100644
--- a/solr/core/src/java/org/apache/solr/search/function/DualDoubleFunction.java
+++ b/solr/core/src/java/org/apache/solr/search/function/DualDoubleFunction.java
@@ -18,6 +18,7 @@ package org.apache.solr.search.function;
 
 import java.io.IOException;
 import java.util.Map;
+import java.util.Objects;
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.queries.function.FunctionValues;
 import org.apache.lucene.queries.function.ValueSource;
@@ -96,8 +97,8 @@ public abstract class DualDoubleFunction extends ValueSource {
 
   @Override
   public boolean equals(Object o) {
-    if (this.getClass() != o.getClass()) return false;
+    if (!(o instanceof DualDoubleFunction)) return false;
     DualDoubleFunction other = (DualDoubleFunction) o;
-    return this.a.equals(other.a) && this.b.equals(other.b);
+    return Objects.equals(this.a, other.a) && Objects.equals(this.b, other.b);
   }
 }
diff --git a/solr/core/src/java/org/apache/solr/search/function/FileFloatSource.java b/solr/core/src/java/org/apache/solr/search/function/FileFloatSource.java
index 9c5e5cc10cc..cc3f4d91216 100644
--- a/solr/core/src/java/org/apache/solr/search/function/FileFloatSource.java
+++ b/solr/core/src/java/org/apache/solr/search/function/FileFloatSource.java
@@ -109,7 +109,7 @@ public class FileFloatSource extends ValueSource {
 
   @Override
   public boolean equals(Object o) {
-    if (o.getClass() != FileFloatSource.class) return false;
+    if (!(o instanceof FileFloatSource)) return false;
     FileFloatSource other = (FileFloatSource) o;
     return this.field.getName().equals(other.field.getName())
         && this.keyField.getName().equals(other.keyField.getName())
diff --git a/solr/core/src/java/org/apache/solr/search/function/MultiStringFunction.java b/solr/core/src/java/org/apache/solr/search/function/MultiStringFunction.java
index 3d889051779..a2e7dd7c3d2 100644
--- a/solr/core/src/java/org/apache/solr/search/function/MultiStringFunction.java
+++ b/solr/core/src/java/org/apache/solr/search/function/MultiStringFunction.java
@@ -19,6 +19,7 @@ package org.apache.solr.search.function;
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.Map;
+import java.util.Objects;
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.queries.function.FunctionValues;
 import org.apache.lucene.queries.function.ValueSource;
@@ -133,9 +134,9 @@ public abstract class MultiStringFunction extends ValueSource {
 
   @Override
   public boolean equals(Object o) {
-    if (getClass() != o.getClass()) return false;
+    if (!(o instanceof MultiStringFunction)) return false;
     MultiStringFunction other = (MultiStringFunction) o;
-    return this.name().equals(other.name()) && Arrays.equals(this.sources, other.sources);
+    return Objects.equals(this.name(), other.name()) && Arrays.equals(this.sources, other.sources);
   }
 
   @Override
diff --git a/solr/core/src/java/org/apache/solr/search/function/OrdFieldSource.java b/solr/core/src/java/org/apache/solr/search/function/OrdFieldSource.java
index 5379c09b728..bbcb81363b5 100644
--- a/solr/core/src/java/org/apache/solr/search/function/OrdFieldSource.java
+++ b/solr/core/src/java/org/apache/solr/search/function/OrdFieldSource.java
@@ -170,9 +170,7 @@ public class OrdFieldSource extends ValueSource {
 
   @Override
   public boolean equals(Object o) {
-    return o != null
-        && o.getClass() == OrdFieldSource.class
-        && this.field.equals(((OrdFieldSource) o).field);
+    return o instanceof OrdFieldSource && this.field.equals(((OrdFieldSource) o).field);
   }
 
   private static final int hcode = OrdFieldSource.class.hashCode();
diff --git a/solr/core/src/java/org/apache/solr/search/function/ReverseOrdFieldSource.java b/solr/core/src/java/org/apache/solr/search/function/ReverseOrdFieldSource.java
index 897d8f2a91c..5e725f79dab 100644
--- a/solr/core/src/java/org/apache/solr/search/function/ReverseOrdFieldSource.java
+++ b/solr/core/src/java/org/apache/solr/search/function/ReverseOrdFieldSource.java
@@ -122,7 +122,7 @@ public class ReverseOrdFieldSource extends ValueSource {
 
   @Override
   public boolean equals(Object o) {
-    if (o == null || (o.getClass() != ReverseOrdFieldSource.class)) return false;
+    if (!(o instanceof ReverseOrdFieldSource)) return false;
     ReverseOrdFieldSource other = (ReverseOrdFieldSource) o;
     return this.field.equals(other.field);
   }
diff --git a/solr/core/src/java/org/apache/solr/search/function/ValueSourceRangeFilter.java b/solr/core/src/java/org/apache/solr/search/function/ValueSourceRangeFilter.java
index 5060e889a10..457bc756b32 100644
--- a/solr/core/src/java/org/apache/solr/search/function/ValueSourceRangeFilter.java
+++ b/solr/core/src/java/org/apache/solr/search/function/ValueSourceRangeFilter.java
@@ -18,6 +18,7 @@ package org.apache.solr.search.function;
 
 import java.io.IOException;
 import java.util.Map;
+import java.util.Objects;
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.queries.function.FunctionValues;
 import org.apache.lucene.queries.function.ValueSource;
@@ -147,18 +148,13 @@ public class ValueSourceRangeFilter extends Query {
   public boolean equals(Object o) {
     if (this == o) return true;
     if (!(o instanceof ValueSourceRangeFilter)) return false;
-    ValueSourceRangeFilter other = (ValueSourceRangeFilter) o;
 
-    if (!this.valueSource.equals(other.valueSource)
-        || this.includeLower != other.includeLower
-        || this.includeUpper != other.includeUpper) {
-      return false;
-    }
-    if (this.lowerVal != null ? !this.lowerVal.equals(other.lowerVal) : other.lowerVal != null)
-      return false;
-    if (this.upperVal != null ? !this.upperVal.equals(other.upperVal) : other.upperVal != null)
-      return false;
-    return true;
+    ValueSourceRangeFilter other = (ValueSourceRangeFilter) o;
+    return Objects.equals(this.valueSource, other.valueSource)
+        && this.includeLower == other.includeLower
+        && this.includeUpper == other.includeUpper
+        && Objects.equals(this.lowerVal, other.lowerVal)
+        && Objects.equals(this.upperVal, other.upperVal);
   }
 
   @Override
diff --git a/solr/core/src/java/org/apache/solr/search/function/distance/GeohashHaversineFunction.java b/solr/core/src/java/org/apache/solr/search/function/distance/GeohashHaversineFunction.java
index 73694bc7525..6ffb4691d8e 100644
--- a/solr/core/src/java/org/apache/solr/search/function/distance/GeohashHaversineFunction.java
+++ b/solr/core/src/java/org/apache/solr/search/function/distance/GeohashHaversineFunction.java
@@ -18,6 +18,7 @@ package org.apache.solr.search.function.distance;
 
 import java.io.IOException;
 import java.util.Map;
+import java.util.Objects;
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.queries.function.FunctionValues;
 import org.apache.lucene.queries.function.ValueSource;
@@ -104,12 +105,12 @@ public class GeohashHaversineFunction extends ValueSource {
 
   @Override
   public boolean equals(Object o) {
-    if (this.getClass() != o.getClass()) return false;
+    if (!(o instanceof GeohashHaversineFunction)) return false;
     GeohashHaversineFunction other = (GeohashHaversineFunction) o;
-    return this.name().equals(other.name())
-        && geoHash1.equals(other.geoHash1)
-        && geoHash2.equals(other.geoHash2)
-        && degreesToDist == other.degreesToDist;
+    return Objects.equals(this.name(), other.name())
+        && Objects.equals(geoHash1, other.geoHash1)
+        && Objects.equals(geoHash2, other.geoHash2)
+        && (degreesToDist == other.degreesToDist);
   }
 
   @Override
diff --git a/solr/core/src/java/org/apache/solr/search/function/distance/HaversineFunction.java b/solr/core/src/java/org/apache/solr/search/function/distance/HaversineFunction.java
index 9060bd7612f..2a0203536f9 100644
--- a/solr/core/src/java/org/apache/solr/search/function/distance/HaversineFunction.java
+++ b/solr/core/src/java/org/apache/solr/search/function/distance/HaversineFunction.java
@@ -18,6 +18,7 @@ package org.apache.solr.search.function.distance;
 
 import java.io.IOException;
 import java.util.Map;
+import java.util.Objects;
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.queries.function.FunctionValues;
 import org.apache.lucene.queries.function.ValueSource;
@@ -123,12 +124,12 @@ public class HaversineFunction extends ValueSource {
 
   @Override
   public boolean equals(Object o) {
-    if (this.getClass() != o.getClass()) return false;
+    if (!(o instanceof HaversineFunction)) return false;
     HaversineFunction other = (HaversineFunction) o;
-    return this.name().equals(other.name())
-        && p1.equals(other.p1)
-        && p2.equals(other.p2)
-        && radius == other.radius;
+    return Objects.equals(this.name(), other.name())
+        && Objects.equals(p1, other.p1)
+        && Objects.equals(p2, other.p2)
+        && (radius == other.radius);
   }
 
   @Override
diff --git a/solr/core/src/java/org/apache/solr/search/join/ChildFieldValueSourceParser.java b/solr/core/src/java/org/apache/solr/search/join/ChildFieldValueSourceParser.java
index 60e504cb1fa..2cd3e6a26f2 100644
--- a/solr/core/src/java/org/apache/solr/search/join/ChildFieldValueSourceParser.java
+++ b/solr/core/src/java/org/apache/solr/search/join/ChildFieldValueSourceParser.java
@@ -19,6 +19,7 @@ package org.apache.solr.search.join;
 import java.io.IOException;
 import java.lang.invoke.MethodHandles;
 import java.util.Map;
+import java.util.Objects;
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.queries.function.FunctionValues;
 import org.apache.lucene.queries.function.ValueSource;
@@ -98,19 +99,11 @@ public class ChildFieldValueSourceParser extends ValueSourceParser {
     @Override
     public boolean equals(Object obj) {
       if (this == obj) return true;
-      if (obj == null) return false;
-      if (getClass() != obj.getClass()) return false;
+      if (!(obj instanceof BlockJoinSortFieldValueSource)) return false;
       BlockJoinSortFieldValueSource other = (BlockJoinSortFieldValueSource) obj;
-      if (childField == null) {
-        if (other.childField != null) return false;
-      } else if (!childField.equals(other.childField)) return false;
-      if (childFilter == null) {
-        if (other.childFilter != null) return false;
-      } else if (!childFilter.equals(other.childFilter)) return false;
-      if (parentFilter == null) {
-        if (other.parentFilter != null) return false;
-      } else if (!parentFilter.equals(other.parentFilter)) return false;
-      return true;
+      return Objects.equals(childField, other.childField)
+          && Objects.equals(childFilter, other.childFilter)
+          && Objects.equals(parentFilter, other.parentFilter);
     }
 
     @Override
diff --git a/solr/core/src/java/org/apache/solr/search/join/ScoreJoinQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/join/ScoreJoinQParserPlugin.java
index 9d94e10f548..73ca32b7167 100644
--- a/solr/core/src/java/org/apache/solr/search/join/ScoreJoinQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/join/ScoreJoinQParserPlugin.java
@@ -139,13 +139,10 @@ public class ScoreJoinQParserPlugin extends QParserPlugin {
     public boolean equals(Object obj) {
       if (this == obj) return true;
       if (!super.equals(obj)) return false;
-      if (getClass() != obj.getClass()) return false;
+      if (!(obj instanceof OtherCoreJoinQuery)) return false;
       OtherCoreJoinQuery other = (OtherCoreJoinQuery) obj;
-      if (fromCoreOpenTime != other.fromCoreOpenTime) return false;
-      if (fromIndex == null) {
-        if (other.fromIndex != null) return false;
-      } else if (!fromIndex.equals(other.fromIndex)) return false;
-      return true;
+      return (fromCoreOpenTime == other.fromCoreOpenTime)
+          && Objects.equals(fromIndex, other.fromIndex);
     }
 
     @Override
diff --git a/solr/core/src/java/org/apache/solr/security/BasicAuthPlugin.java b/solr/core/src/java/org/apache/solr/security/BasicAuthPlugin.java
index 0fd18fa4287..87abbb0f1e4 100644
--- a/solr/core/src/java/org/apache/solr/security/BasicAuthPlugin.java
+++ b/solr/core/src/java/org/apache/solr/security/BasicAuthPlugin.java
@@ -313,7 +313,7 @@ public class BasicAuthPlugin extends AuthenticationPlugin
     @Override
     public boolean equals(Object o) {
       if (this == o) return true;
-      if (o == null || getClass() != o.getClass()) return false;
+      if (!(o instanceof BasicAuthUserPrincipal)) return false;
       BasicAuthUserPrincipal that = (BasicAuthUserPrincipal) o;
       return Objects.equals(username, that.username) && Objects.equals(password, that.password);
     }
diff --git a/solr/core/src/java/org/apache/solr/servlet/CoreContainerProvider.java b/solr/core/src/java/org/apache/solr/servlet/CoreContainerProvider.java
index a32df7dee39..aad7d66946c 100644
--- a/solr/core/src/java/org/apache/solr/servlet/CoreContainerProvider.java
+++ b/solr/core/src/java/org/apache/solr/servlet/CoreContainerProvider.java
@@ -512,7 +512,7 @@ public class CoreContainerProvider implements ServletContextListener {
     @Override
     public boolean equals(Object o) {
       if (this == o) return true;
-      if (o == null || getClass() != o.getClass()) return false;
+      if (!(o instanceof ContextInitializationKey)) return false;
       ContextInitializationKey that = (ContextInitializationKey) o;
       return ctx.equals(that.ctx);
     }
diff --git a/solr/core/src/java/org/apache/solr/spelling/PossibilityIterator.java b/solr/core/src/java/org/apache/solr/spelling/PossibilityIterator.java
index e74189bf9a1..8f676fa06ea 100644
--- a/solr/core/src/java/org/apache/solr/spelling/PossibilityIterator.java
+++ b/solr/core/src/java/org/apache/solr/spelling/PossibilityIterator.java
@@ -25,6 +25,7 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.NoSuchElementException;
+import java.util.Objects;
 import java.util.PriorityQueue;
 import java.util.Set;
 
@@ -362,12 +363,9 @@ public class PossibilityIterator implements Iterator<PossibilityIterator.RankedS
     public boolean equals(Object obj) {
       if (this == obj) return true;
       if (obj == null) return false;
-      if (getClass() != obj.getClass()) return false;
+      if (!(obj instanceof RankedSpellPossibility)) return false;
       RankedSpellPossibility other = (RankedSpellPossibility) obj;
-      if (corrections == null) {
-        if (other.corrections != null) return false;
-      } else if (!corrections.equals(other.corrections)) return false;
-      return true;
+      return Objects.equals(corrections, other.corrections);
     }
 
     @Override
diff --git a/solr/core/src/java/org/apache/solr/spelling/ResultEntry.java b/solr/core/src/java/org/apache/solr/spelling/ResultEntry.java
index b9f82d0a014..67dd64f5f2d 100644
--- a/solr/core/src/java/org/apache/solr/spelling/ResultEntry.java
+++ b/solr/core/src/java/org/apache/solr/spelling/ResultEntry.java
@@ -16,6 +16,8 @@
  */
 package org.apache.solr.spelling;
 
+import java.util.Objects;
+
 public class ResultEntry {
   public Token token;
   public String suggestion;
@@ -40,16 +42,10 @@ public class ResultEntry {
   @Override
   public boolean equals(Object obj) {
     if (this == obj) return true;
-    if (obj == null) return false;
-    if (getClass() != obj.getClass()) return false;
+    if (!(obj instanceof ResultEntry)) return false;
     ResultEntry other = (ResultEntry) obj;
-    if (freq != other.freq) return false;
-    if (suggestion == null) {
-      if (other.suggestion != null) return false;
-    } else if (!suggestion.equals(other.suggestion)) return false;
-    if (token == null) {
-      if (other.token != null) return false;
-    } else if (!token.equals(other.token)) return false;
-    return true;
+    return freq == other.freq
+        && Objects.equals(suggestion, other.suggestion)
+        && Objects.equals(token, other.token);
   }
 }
diff --git a/solr/core/src/java/org/apache/solr/spelling/Token.java b/solr/core/src/java/org/apache/solr/spelling/Token.java
index 9d87eaeedb4..c625a9fbdc9 100644
--- a/solr/core/src/java/org/apache/solr/spelling/Token.java
+++ b/solr/core/src/java/org/apache/solr/spelling/Token.java
@@ -16,6 +16,7 @@
  */
 package org.apache.solr.spelling;
 
+import java.util.Objects;
 import org.apache.lucene.analysis.tokenattributes.FlagsAttribute;
 import org.apache.lucene.analysis.tokenattributes.PackedTokenAttributeImpl;
 import org.apache.lucene.analysis.tokenattributes.PayloadAttribute;
@@ -131,13 +132,10 @@ public class Token extends PackedTokenAttributeImpl implements FlagsAttribute, P
   @Override
   public boolean equals(Object obj) {
     if (obj == this) return true;
+    if (!(obj instanceof Token)) return false;
 
-    if (obj instanceof Token) {
-      final Token other = (Token) obj;
-      return (flags == other.flags
-          && (payload == null ? other.payload == null : payload.equals(other.payload))
-          && super.equals(obj));
-    } else return false;
+    final Token other = (Token) obj;
+    return (flags == other.flags && (Objects.equals(payload, other.payload)) && super.equals(obj));
   }
 
   @Override
diff --git a/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java b/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java
index cb5690e06df..af5dcaf4649 100644
--- a/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java
+++ b/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java
@@ -30,6 +30,7 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Objects;
 import java.util.Set;
 import java.util.concurrent.CompletionService;
 import java.util.concurrent.ExecutorCompletionService;
@@ -638,24 +639,13 @@ public class SolrCmdDistributor implements Closeable {
     @Override
     public boolean equals(Object obj) {
       if (this == obj) return true;
-      if (obj == null) return false;
-      if (getClass() != obj.getClass()) return false;
+      if (!(obj instanceof StdNode)) return false;
       StdNode other = (StdNode) obj;
-      if (this.retry != other.retry) return false;
-      if (this.maxRetries != other.maxRetries) return false;
-      String baseUrl = nodeProps.getBaseUrl();
-      String coreName = nodeProps.getCoreName();
-      String url = nodeProps.getCoreUrl();
-      if (baseUrl == null) {
-        if (other.nodeProps.getBaseUrl() != null) return false;
-      } else if (!baseUrl.equals(other.nodeProps.getBaseUrl())) return false;
-      if (coreName == null) {
-        if (other.nodeProps.getCoreName() != null) return false;
-      } else if (!coreName.equals(other.nodeProps.getCoreName())) return false;
-      if (url == null) {
-        if (other.nodeProps.getCoreUrl() != null) return false;
-      } else if (!url.equals(other.nodeProps.getCoreUrl())) return false;
-      return true;
+      return (this.retry == other.retry)
+          && (this.maxRetries == other.maxRetries)
+          && Objects.equals(this.nodeProps.getBaseUrl(), other.nodeProps.getBaseUrl())
+          && Objects.equals(this.nodeProps.getCoreName(), other.nodeProps.getCoreName())
+          && Objects.equals(this.nodeProps.getCoreUrl(), other.nodeProps.getCoreUrl());
     }
 
     @Override
@@ -732,13 +722,9 @@ public class SolrCmdDistributor implements Closeable {
     public boolean equals(Object obj) {
       if (this == obj) return true;
       if (!super.equals(obj)) return false;
-      if (getClass() != obj.getClass()) return false;
+      if (!(obj instanceof ForwardNode)) return false;
       ForwardNode other = (ForwardNode) obj;
-      if (nodeProps.getCoreUrl() == null) {
-        if (other.nodeProps.getCoreUrl() != null) return false;
-      } else if (!nodeProps.getCoreUrl().equals(other.nodeProps.getCoreUrl())) return false;
-
-      return true;
+      return Objects.equals(nodeProps.getCoreUrl(), other.nodeProps.getCoreUrl());
     }
   }
 
diff --git a/solr/core/src/test/org/apache/solr/cluster/placement/ClusterAbstractionsForTest.java b/solr/core/src/test/org/apache/solr/cluster/placement/ClusterAbstractionsForTest.java
index baf24527965..c6e59364c3f 100644
--- a/solr/core/src/test/org/apache/solr/cluster/placement/ClusterAbstractionsForTest.java
+++ b/solr/core/src/test/org/apache/solr/cluster/placement/ClusterAbstractionsForTest.java
@@ -95,15 +95,8 @@ class ClusterAbstractionsForTest {
      */
     @Override
     public boolean equals(Object obj) {
-      if (obj == null) {
-        return false;
-      }
-      if (obj == this) {
-        return true;
-      }
-      if (obj.getClass() != getClass()) {
-        return false;
-      }
+      if (obj == this) return true;
+      if (!(obj instanceof NodeImpl)) return false;
       NodeImpl other = (NodeImpl) obj;
       return Objects.equals(this.nodeName, other.nodeName);
     }
@@ -224,15 +217,8 @@ class ClusterAbstractionsForTest {
 
     @Override
     public boolean equals(Object obj) {
-      if (obj == null) {
-        return false;
-      }
-      if (obj == this) {
-        return true;
-      }
-      if (obj.getClass() != getClass()) {
-        return false;
-      }
+      if (obj == this) return true;
+      if (!(obj instanceof ShardImpl)) return false;
       ShardImpl other = (ShardImpl) obj;
       return Objects.equals(this.shardName, other.shardName)
           && Objects.equals(this.collection, other.collection)
@@ -302,15 +288,8 @@ class ClusterAbstractionsForTest {
 
     @Override
     public boolean equals(Object obj) {
-      if (obj == null) {
-        return false;
-      }
-      if (obj == this) {
-        return true;
-      }
-      if (obj.getClass() != getClass()) {
-        return false;
-      }
+      if (obj == this) return true;
+      if (!(obj instanceof ReplicaImpl)) return false;
       ReplicaImpl other = (ReplicaImpl) obj;
       return Objects.equals(this.replicaName, other.replicaName)
           && Objects.equals(this.coreName, other.coreName)
diff --git a/solr/core/src/test/org/apache/solr/handler/component/DistributedFacetPivotSmallTest.java b/solr/core/src/test/org/apache/solr/handler/component/DistributedFacetPivotSmallTest.java
index e844e652736..68de31559c4 100644
--- a/solr/core/src/test/org/apache/solr/handler/component/DistributedFacetPivotSmallTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/component/DistributedFacetPivotSmallTest.java
@@ -2523,7 +2523,7 @@ public class DistributedFacetPivotSmallTest extends BaseDistributedSearchTestCas
     public boolean equals(Object obj) {
       if (this == obj) return true;
       if (obj == null) return false;
-      if (!obj.getClass().isAssignableFrom(PivotField.class)) return false;
+      if (!(obj instanceof PivotField)) return false;
       PivotField other = (PivotField) obj;
       if (getCount() != other.getCount()) return false;
       if (getField() == null) {
@@ -2568,12 +2568,12 @@ public class DistributedFacetPivotSmallTest extends BaseDistributedSearchTestCas
         }
       }
       if (getFacetQuery() == null) {
-        if (other.getFacetQuery() != null) return false;
+        return other.getFacetQuery() == null;
       } else {
         if (getFacetQuery().size() != other.getFacetQuery().size()) return false;
         for (Map.Entry<String, Integer> entry : getFacetQuery().entrySet()) {
           Integer otherQCount = other.getFacetQuery().get(entry.getKey());
-          if (otherQCount == null || !otherQCount.equals(entry.getValue())) return false;
+          if (!Objects.equals(otherQCount, entry.getValue())) return false;
         }
       }
       return true;
diff --git a/solr/core/src/test/org/apache/solr/security/PrincipalWithUserRoles.java b/solr/core/src/test/org/apache/solr/security/PrincipalWithUserRoles.java
index f5dc13179d2..b07b8e5cee3 100644
--- a/solr/core/src/test/org/apache/solr/security/PrincipalWithUserRoles.java
+++ b/solr/core/src/test/org/apache/solr/security/PrincipalWithUserRoles.java
@@ -65,10 +65,9 @@ public class PrincipalWithUserRoles implements Principal, VerifiedUserRoles {
   @Override
   public boolean equals(Object o) {
     if (this == o) return true;
-    if (o == null || getClass() != o.getClass()) return false;
+    if (!(o instanceof PrincipalWithUserRoles)) return false;
 
     PrincipalWithUserRoles that = (PrincipalWithUserRoles) o;
-
     if (!username.equals(that.username)) return false;
     return roles.equals(that.roles);
   }
diff --git a/solr/modules/hdfs/src/java/org/apache/solr/hdfs/store/blockcache/BlockCacheKey.java b/solr/modules/hdfs/src/java/org/apache/solr/hdfs/store/blockcache/BlockCacheKey.java
index 29f061dbfb2..ed02ee53deb 100644
--- a/solr/modules/hdfs/src/java/org/apache/solr/hdfs/store/blockcache/BlockCacheKey.java
+++ b/solr/modules/hdfs/src/java/org/apache/solr/hdfs/store/blockcache/BlockCacheKey.java
@@ -16,6 +16,8 @@
  */
 package org.apache.solr.hdfs.store.blockcache;
 
+import java.util.Objects;
+
 /**
  * @lucene.experimental
  */
@@ -62,15 +64,9 @@ public class BlockCacheKey implements Cloneable {
   @Override
   public boolean equals(Object obj) {
     if (this == obj) return true;
-    if (obj == null) return false;
-    if (getClass() != obj.getClass()) return false;
+    if (!(obj instanceof BlockCacheKey)) return false;
     BlockCacheKey other = (BlockCacheKey) obj;
-    if (block != other.block) return false;
-    if (file != other.file) return false;
-    if (path == null) {
-      if (other.path != null) return false;
-    } else if (!path.equals(other.path)) return false;
-    return true;
+    return block == other.block && file == other.file && Objects.equals(path, other.path);
   }
 
   @Override
diff --git a/solr/modules/jwt-auth/src/java/org/apache/solr/security/jwt/JWTPrincipal.java b/solr/modules/jwt-auth/src/java/org/apache/solr/security/jwt/JWTPrincipal.java
index ec70bb2baf5..93d2764e83f 100644
--- a/solr/modules/jwt-auth/src/java/org/apache/solr/security/jwt/JWTPrincipal.java
+++ b/solr/modules/jwt-auth/src/java/org/apache/solr/security/jwt/JWTPrincipal.java
@@ -62,7 +62,7 @@ public class JWTPrincipal implements Principal {
   @Override
   public boolean equals(Object o) {
     if (this == o) return true;
-    if (o == null || getClass() != o.getClass()) return false;
+    if (!(o instanceof JWTPrincipal)) return false;
     JWTPrincipal that = (JWTPrincipal) o;
     return Objects.equals(username, that.username)
         && Objects.equals(token, that.token)
diff --git a/solr/modules/ltr/src/java/org/apache/solr/ltr/model/LTRScoringModel.java b/solr/modules/ltr/src/java/org/apache/solr/ltr/model/LTRScoringModel.java
index 48a98112970..8af64bbec5b 100644
--- a/solr/modules/ltr/src/java/org/apache/solr/ltr/model/LTRScoringModel.java
+++ b/solr/modules/ltr/src/java/org/apache/solr/ltr/model/LTRScoringModel.java
@@ -214,53 +214,14 @@ public abstract class LTRScoringModel implements Accountable {
 
   @Override
   public boolean equals(Object obj) {
-    if (this == obj) {
-      return true;
-    }
-    if (obj == null) {
-      return false;
-    }
-    if (getClass() != obj.getClass()) {
-      return false;
-    }
+    if (this == obj) return true;
+    if (!(obj instanceof LTRScoringModel)) return false;
     final LTRScoringModel other = (LTRScoringModel) obj;
-    if (features == null) {
-      if (other.features != null) {
-        return false;
-      }
-    } else if (!features.equals(other.features)) {
-      return false;
-    }
-    if (norms == null) {
-      if (other.norms != null) {
-        return false;
-      }
-    } else if (!norms.equals(other.norms)) {
-      return false;
-    }
-    if (name == null) {
-      if (other.name != null) {
-        return false;
-      }
-    } else if (!name.equals(other.name)) {
-      return false;
-    }
-    if (params == null) {
-      if (other.params != null) {
-        return false;
-      }
-    } else if (!params.equals(other.params)) {
-      return false;
-    }
-    if (featureStoreName == null) {
-      if (other.featureStoreName != null) {
-        return false;
-      }
-    } else if (!featureStoreName.equals(other.featureStoreName)) {
-      return false;
-    }
-
-    return true;
+    return Objects.equals(features, other.features)
+        && Objects.equals(norms, other.norms)
+        && Objects.equals(name, other.name)
+        && Objects.equals(params, other.params)
+        && Objects.equals(featureStoreName, other.featureStoreName);
   }
 
   @Override
diff --git a/solr/modules/ltr/src/java/org/apache/solr/ltr/model/WrapperModel.java b/solr/modules/ltr/src/java/org/apache/solr/ltr/model/WrapperModel.java
index 19ff7c9b20d..86eb8c45564 100644
--- a/solr/modules/ltr/src/java/org/apache/solr/ltr/model/WrapperModel.java
+++ b/solr/modules/ltr/src/java/org/apache/solr/ltr/model/WrapperModel.java
@@ -20,6 +20,7 @@ package org.apache.solr.ltr.model;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.search.Explanation;
 import org.apache.solr.ltr.feature.Feature;
@@ -68,15 +69,10 @@ public abstract class WrapperModel extends AdapterModel {
   public boolean equals(Object obj) {
     if (this == obj) return true;
     if (!super.equals(obj)) return false;
-    if (getClass() != obj.getClass()) return false;
+    if (!(obj instanceof WrapperModel)) return false;
     WrapperModel other = (WrapperModel) obj;
-    if (model == null) {
-      if (other.model != null) return false;
-    } else if (!model.equals(other.model)) return false;
-    if (solrResourceLoader == null) {
-      if (other.solrResourceLoader != null) return false;
-    } else if (!solrResourceLoader.equals(other.solrResourceLoader)) return false;
-    return true;
+    return Objects.equals(model, other.model)
+        && Objects.equals(solrResourceLoader, other.solrResourceLoader);
   }
 
   public WrapperModel(
diff --git a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/MetricsQueryTemplate.java b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/MetricsQueryTemplate.java
index b273b862ee4..48d02ca3a3a 100644
--- a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/MetricsQueryTemplate.java
+++ b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/MetricsQueryTemplate.java
@@ -116,7 +116,7 @@ public class MetricsQueryTemplate {
   @Override
   public boolean equals(Object o) {
     if (this == o) return true;
-    if (o == null || getClass() != o.getClass()) return false;
+    if (!(o instanceof MetricsQueryTemplate)) return false;
     MetricsQueryTemplate that = (MetricsQueryTemplate) o;
     return name.equals(that.name)
         && Objects.equals(defaultType, that.defaultType)
diff --git a/solr/solrj-zookeeper/src/java/org/apache/solr/client/solrj/cloud/VersionedData.java b/solr/solrj-zookeeper/src/java/org/apache/solr/client/solrj/cloud/VersionedData.java
index ef8aa61cd32..7a36d4578d1 100644
--- a/solr/solrj-zookeeper/src/java/org/apache/solr/client/solrj/cloud/VersionedData.java
+++ b/solr/solrj-zookeeper/src/java/org/apache/solr/client/solrj/cloud/VersionedData.java
@@ -82,7 +82,7 @@ public class VersionedData implements MapWriter {
   @Override
   public boolean equals(Object o) {
     if (this == o) return true;
-    if (o == null || getClass() != o.getClass()) return false;
+    if (!(o instanceof VersionedData)) return false;
     VersionedData that = (VersionedData) o;
     return version == that.version
         && Arrays.equals(data, that.data)
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/comp/FieldComparator.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/comp/FieldComparator.java
index 9e2798c5c0b..e47bfd90da8 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/comp/FieldComparator.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/comp/FieldComparator.java
@@ -194,7 +194,7 @@ public class FieldComparator implements StreamComparator {
   @Override
   public boolean equals(Object o) {
     if (this == o) return true;
-    if (o == null || getClass() != o.getClass()) return false;
+    if (!(o instanceof FieldComparator)) return false;
     FieldComparator that = (FieldComparator) o;
     // comparator is based on the other fields so is not needed in this compare
     return leftFieldName.equals(that.leftFieldName)
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/comp/MultipleFieldComparator.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/comp/MultipleFieldComparator.java
index 087983e014c..9790baddf20 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/comp/MultipleFieldComparator.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/comp/MultipleFieldComparator.java
@@ -60,7 +60,7 @@ public class MultipleFieldComparator implements StreamComparator {
   @Override
   public boolean equals(Object o) {
     if (this == o) return true;
-    if (o == null || getClass() != o.getClass()) return false;
+    if (!(o instanceof MultipleFieldComparator)) return false;
     MultipleFieldComparator that = (MultipleFieldComparator) o;
     return Arrays.equals(comps, that.comps);
   }
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/expr/StreamExpression.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/expr/StreamExpression.java
index f2bf0fc7006..f9d2efbe844 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/expr/StreamExpression.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/expr/StreamExpression.java
@@ -99,7 +99,7 @@ public class StreamExpression implements StreamExpressionParameter {
 
   @Override
   public boolean equals(Object other) {
-    if (other.getClass() != StreamExpression.class) {
+    if (!(other instanceof StreamExpression)) {
       return false;
     }
 
@@ -112,9 +112,7 @@ public class StreamExpression implements StreamExpressionParameter {
       return false;
     }
 
-    if (null != this.functionName
-        && null != check.functionName
-        && !this.functionName.equals(check.functionName)) {
+    if (null != this.functionName && !this.functionName.equals(check.functionName)) {
       return false;
     }
 
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/expr/StreamExpressionNamedParameter.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/expr/StreamExpressionNamedParameter.java
index bfce06e5529..6c92b1c100d 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/expr/StreamExpressionNamedParameter.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/expr/StreamExpressionNamedParameter.java
@@ -96,7 +96,7 @@ public class StreamExpressionNamedParameter implements StreamExpressionParameter
 
   @Override
   public boolean equals(Object other) {
-    if (other.getClass() != StreamExpressionNamedParameter.class) {
+    if (!(other instanceof StreamExpressionNamedParameter)) {
       return false;
     }
 
@@ -109,7 +109,7 @@ public class StreamExpressionNamedParameter implements StreamExpressionParameter
       return false;
     }
 
-    if (null != this.name && null != check.name && !this.name.equals(check.name)) {
+    if (null != this.name && !this.name.equals(check.name)) {
       return false;
     }
 
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/expr/StreamExpressionValue.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/expr/StreamExpressionValue.java
index 2e7da74349e..dffa00e47db 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/expr/StreamExpressionValue.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/expr/StreamExpressionValue.java
@@ -47,7 +47,7 @@ public class StreamExpressionValue implements StreamExpressionParameter {
 
   @Override
   public boolean equals(Object other) {
-    if (other.getClass() != StreamExpressionValue.class) {
+    if (!(other instanceof StreamExpressionValue)) {
       return false;
     }
 
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/expr/StreamFactory.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/expr/StreamFactory.java
index ec3615fbbcc..dc3e0d67eed 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/expr/StreamFactory.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/expr/StreamFactory.java
@@ -592,12 +592,11 @@ public class StreamFactory implements Serializable {
       return Long.valueOf(original);
     } catch (Exception ignored) {
     }
-    ;
+
     try {
       return Double.valueOf(original);
     } catch (Exception ignored) {
     }
-    ;
 
     // is a string
     return original;
diff --git a/solr/solrj/src/java/org/apache/solr/common/cloud/ClusterState.java b/solr/solrj/src/java/org/apache/solr/common/cloud/ClusterState.java
index 3a96b8b8dcd..a4516f73bf1 100644
--- a/solr/solrj/src/java/org/apache/solr/common/cloud/ClusterState.java
+++ b/solr/solrj/src/java/org/apache/solr/common/cloud/ClusterState.java
@@ -317,8 +317,7 @@ public class ClusterState implements JSONWriter.Writable {
   @Override
   public boolean equals(Object obj) {
     if (this == obj) return true;
-    if (obj == null) return false;
-    if (getClass() != obj.getClass()) return false;
+    if (!(obj instanceof ClusterState)) return false;
     ClusterState other = (ClusterState) obj;
     if (liveNodes == null) {
       return other.liveNodes == null;
diff --git a/solr/solrj/src/java/org/apache/solr/common/cloud/DocRouter.java b/solr/solrj/src/java/org/apache/solr/common/cloud/DocRouter.java
index e3ec561cd80..af0ebc66f12 100644
--- a/solr/solrj/src/java/org/apache/solr/common/cloud/DocRouter.java
+++ b/solr/solrj/src/java/org/apache/solr/common/cloud/DocRouter.java
@@ -136,7 +136,7 @@ public abstract class DocRouter {
 
     @Override
     public boolean equals(Object obj) {
-      if (obj.getClass() != getClass()) return false;
+      if (!(obj instanceof Range)) return false;
       Range other = (Range) obj;
       return this.min == other.min && this.max == other.max;
     }
diff --git a/solr/solrj/src/java/org/apache/solr/common/cloud/Replica.java b/solr/solrj/src/java/org/apache/solr/common/cloud/Replica.java
index adbf57ecc32..bf1dca1ca96 100644
--- a/solr/solrj/src/java/org/apache/solr/common/cloud/Replica.java
+++ b/solr/solrj/src/java/org/apache/solr/common/cloud/Replica.java
@@ -265,7 +265,7 @@ public class Replica extends ZkNodeProps implements MapWriter {
   @Override
   public boolean equals(Object o) {
     if (this == o) return true;
-    if (o == null || getClass() != o.getClass()) return false;
+    if (!(o instanceof Replica)) return false;
     if (!super.equals(o)) return false;
 
     Replica other = (Replica) o;
diff --git a/solr/solrj/src/test/org/noggit/TestJSONParser.java b/solr/solrj/src/test/org/noggit/TestJSONParser.java
index 246c4a59c56..17d043e376e 100644
--- a/solr/solrj/src/test/org/noggit/TestJSONParser.java
+++ b/solr/solrj/src/test/org/noggit/TestJSONParser.java
@@ -302,7 +302,7 @@ public class TestJSONParser extends SolrTestCaseJ4 {
 
     @Override
     public boolean equals(Object o) {
-      return (getClass() == o.getClass() && digits.equals(((Num) o).digits));
+      return (o instanceof Num && digits.equals(((Num) o).digits));
     }
 
     @Override
diff --git a/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java b/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
index 25f7f6c3b5b..4d842681159 100644
--- a/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
+++ b/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
@@ -70,6 +70,7 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.Objects;
 import java.util.Optional;
 import java.util.Properties;
 import java.util.Set;
@@ -1826,7 +1827,7 @@ public abstract class SolrTestCaseJ4 extends SolrTestCase {
     public boolean equals(Object o) {
       if (!(o instanceof Doc)) return false;
       Doc other = (Doc) o;
-      return this == other || id != null && id.equals(other.id);
+      return this == other || Objects.equals(id, other.id);
     }
 
     @Override
diff --git a/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java b/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java
index 9d2cac1d11d..1f2ba6965ed 100644
--- a/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java
+++ b/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java
@@ -34,6 +34,7 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.Objects;
 import java.util.Properties;
 import java.util.Random;
 import java.util.Set;
@@ -171,13 +172,9 @@ public abstract class AbstractFullDistribZkTestBase extends AbstractDistribZkTes
     @Override
     public boolean equals(Object obj) {
       if (this == obj) return true;
-      if (obj == null) return false;
-      if (getClass() != obj.getClass()) return false;
+      if (!(obj instanceof CloudJettyRunner)) return false;
       CloudJettyRunner other = (CloudJettyRunner) obj;
-      if (url == null) {
-        if (other.url != null) return false;
-      } else if (!url.equals(other.url)) return false;
-      return true;
+      return Objects.equals(url, other.url);
     }
 
     @Override
@@ -213,13 +210,9 @@ public abstract class AbstractFullDistribZkTestBase extends AbstractDistribZkTes
     @Override
     public boolean equals(Object obj) {
       if (this == obj) return true;
-      if (obj == null) return false;
-      if (getClass() != obj.getClass()) return false;
+      if (!(obj instanceof CloudSolrServerClient)) return false;
       CloudSolrServerClient other = (CloudSolrServerClient) obj;
-      if (solrClient == null) {
-        if (other.solrClient != null) return false;
-      } else if (!solrClient.equals(other.solrClient)) return false;
-      return true;
+      return Objects.equals(solrClient, other.solrClient);
     }
   }