public final class Objects extends Object
static utility methods for operating on objects, or checking certain conditions before operation. These utilities include null-safe or null-tolerant methods for computing the hash code of an object, returning a string for an object, comparing two objects, and checking if indexes or sub-range values are out of bounds.| Modifier and Type | Method | Description | 
|---|---|---|
| static int | checkFromIndexSize | Checks if the sub-range from  fromIndex(inclusive) tofromIndex + size(exclusive) is within the bounds of range from0(inclusive) tolength(exclusive). | 
| static long | checkFromIndexSize | Checks if the sub-range from  fromIndex(inclusive) tofromIndex + size(exclusive) is within the bounds of range from0(inclusive) tolength(exclusive). | 
| static int | checkFromToIndex | Checks if the sub-range from  fromIndex(inclusive) totoIndex(exclusive) is within the bounds of range from0(inclusive) tolength(exclusive). | 
| static long | checkFromToIndex | Checks if the sub-range from  fromIndex(inclusive) totoIndex(exclusive) is within the bounds of range from0(inclusive) tolength(exclusive). | 
| static int | checkIndex | Checks if the  indexis within the bounds of the range from0(inclusive) tolength(exclusive). | 
| static long | checkIndex | Checks if the  indexis within the bounds of the range from0(inclusive) tolength(exclusive). | 
| static <T> int | compare | Returns 0 if the arguments are identical and  
 c.compare(a, b)otherwise. | 
| static boolean | deepEquals | Returns  trueif the arguments are deeply equal to each other andfalseotherwise. | 
| static boolean | equals | Returns  trueif the arguments are equal to each other andfalseotherwise. | 
| static int | hash | Generates a hash code for a sequence of input values. | 
| static int | hashCode | Returns the hash code of a non- nullargument and 0 for anullargument. | 
| static boolean | isNull | Returns  trueif the provided reference isnullotherwise returnsfalse. | 
| static boolean | nonNull | Returns  trueif the provided reference is non-nullotherwise returnsfalse. | 
| static <T> T | requireNonNull | Checks that the specified object reference is not  null. | 
| static <T> T | requireNonNull | Checks that the specified object reference is not  nulland throws a customizedNullPointerExceptionif it is. | 
| static <T> T | requireNonNull | Checks that the specified object reference is not  nulland throws a customizedNullPointerExceptionif it is. | 
| static <T> T | requireNonNullElse | Returns the first argument if it is non- nulland otherwise returns the non-nullsecond argument. | 
| static <T> T | requireNonNullElseGet | Returns the first argument if it is non- nulland otherwise returns the non-nullvalue ofsupplier.get(). | 
| static String | toIdentityString | Returns a string equivalent to the string returned by  
 Object.toStringif that method andhashCodeare not overridden. | 
| static String | toString | Returns the result of calling  toStringfor a non-
 nullargument and"null"for anullargument. | 
| static String | toString | Returns the result of calling  toStringon the first argument if the first argument is notnulland returns the second argument otherwise. | 
public static boolean equals(Object a, Object b)
true if the arguments are equal to each other and false otherwise. Consequently, if both arguments are null, true is returned. Otherwise, if the first argument is not 
 null, equality is determined by calling the equals method of the first argument with the second argument of this method. Otherwise, false is returned.a - an objectb - an object to be compared with a for equalitytrue if the arguments are equal to each other and false otherwisepublic static boolean deepEquals(Object a, Object b)
true if the arguments are deeply equal to each other and false otherwise. Two null values are deeply equal. If both arguments are arrays, the algorithm in Arrays.deepEquals is used to determine equality. Otherwise, equality is determined by using the equals method of the first argument.a - an objectb - an object to be compared with a for deep equalitytrue if the arguments are deeply equal to each other and false otherwisepublic static int hashCode(Object o)
null argument and 0 for a null argument.o - an objectnull argument and 0 for a null argumentpublic static int hash(Object... values)
Arrays.hashCode(Object[]). This method is useful for implementing Object.hashCode() on objects containing multiple fields. For example, if an object that has three fields, x, 
 y, and z, one could write: 
 @Override public int hashCode() {
     return Objects.hash(x, y, z);
 }
 hashCode(Object).values - the values to be hashedpublic static String toString(Object o)
toString for a non-
 null argument and "null" for a null argument.o - an objecttoString for a non-
 null argument and "null" for a null argumentpublic static String toString(Object o, String nullDefault)
toString on the first argument if the first argument is not null and returns the second argument otherwise.o - an objectnullDefault - string to return if the first argument is null
toString on the first argument if it is not null and the second argument otherwise.public static String toIdentityString(Object o)
 Object.toString if that method and hashCode are not overridden.o.getClass().getName() + "@" + Integer.toHexString(System.identityHashCode(o))
o - an object
 Object.toString if that method and hashCode are not overriddenNullPointerException - if the argument is nullpublic static <T> int compare(T a, T b, Comparator<? super T> c)
 c.compare(a, b) otherwise. Consequently, if both arguments are null 0 is returned. Note that if one of the arguments is null, a 
 NullPointerException may or may not be thrown depending on what ordering policy, if any, the Comparator chooses to have for null values.
T - the type of the objects being compareda - an objectb - an object to be compared with a
c - the Comparator to compare the first two arguments
 c.compare(a, b) otherwise.public static <T> T requireNonNull(T obj)
null. This method is designed primarily for doing parameter validation in methods and constructors, as demonstrated below: 
 public Foo(Bar bar) {
     this.bar = Objects.requireNonNull(bar);
 }
 T - the type of the referenceobj - the object reference to check for nullityobj if not null
NullPointerException - if obj is null
public static <T> T requireNonNull(T obj, String message)
null and throws a customized NullPointerException if it is. This method is designed primarily for doing parameter validation in methods and constructors with multiple parameters, as demonstrated below: 
 public Foo(Bar bar, Baz baz) {
     this.bar = Objects.requireNonNull(bar, "bar must not be null");
     this.baz = Objects.requireNonNull(baz, "baz must not be null");
 }
 T - the type of the referenceobj - the object reference to check for nullitymessage - detail message to be used in the event that a 
                NullPointerException is thrownobj if not null
NullPointerException - if obj is null
public static boolean isNull(Object obj)
true if the provided reference is null otherwise returns false.Predicate, filter(Objects::isNull)
obj - a reference to be checked against null
true if the provided reference is null otherwise false
public static boolean nonNull(Object obj)
true if the provided reference is non-null otherwise returns false.Predicate, filter(Objects::nonNull)
obj - a reference to be checked against null
true if the provided reference is non-null otherwise false
public static <T> T requireNonNullElse(T obj, T defaultObj)
null and otherwise returns the non-null second argument.T - the type of the referenceobj - an objectdefaultObj - a non-null object to return if the first argument is null
null and otherwise the second argument if it is non-null
NullPointerException - if both obj is null and defaultObj is null
public static <T> T requireNonNullElseGet(T obj, Supplier<? extends T> supplier)
null and otherwise returns the non-null value of supplier.get().T - the type of the first argument and return typeobj - an objectsupplier - of a non-null object to return if the first argument is null
null and otherwise the value from supplier.get() if it is non-null
NullPointerException - if both obj is null and either the supplier is null or the supplier.get() value is null
public static <T> T requireNonNull(T obj, Supplier<String> messageSupplier)
null and throws a customized NullPointerException if it is. Unlike the method requireNonNull(Object, String), this method allows creation of the message to be deferred until after the null check is made. While this may confer a performance advantage in the non-null case, when deciding to call this method care should be taken that the costs of creating the message supplier are less than the cost of just creating the string message directly.
T - the type of the referenceobj - the object reference to check for nullitymessageSupplier - supplier of the detail message to be used in the event that a NullPointerException is thrownobj if not null
NullPointerException - if obj is null
public static int checkIndex(int index, int length)
index is within the bounds of the range from 0 (inclusive) to length (exclusive). The index is defined to be out of bounds if any of the following inequalities is true: 
index < 0index >= lengthlength < 0, which is implied from the former inequalitiesindex - the indexlength - the upper-bound (exclusive) of the rangeindex if it is within bounds of the rangeIndexOutOfBoundsException - if the index is out of boundspublic static int checkFromToIndex(int fromIndex, int toIndex, int length)
fromIndex (inclusive) to toIndex (exclusive) is within the bounds of range from 0 (inclusive) to length (exclusive). The sub-range is defined to be out of bounds if any of the following inequalities is true:
fromIndex < 0fromIndex > toIndextoIndex > lengthlength < 0, which is implied from the former inequalitiesfromIndex - the lower-bound (inclusive) of the sub-rangetoIndex - the upper-bound (exclusive) of the sub-rangelength - the upper-bound (exclusive) the rangefromIndex if the sub-range within bounds of the rangeIndexOutOfBoundsException - if the sub-range is out of boundspublic static int checkFromIndexSize(int fromIndex, int size, int length)
fromIndex (inclusive) to fromIndex + size (exclusive) is within the bounds of range from 0 (inclusive) to length (exclusive). The sub-range is defined to be out of bounds if any of the following inequalities is true:
fromIndex < 0size < 0fromIndex + size > length, taking into account integer overflowlength < 0, which is implied from the former inequalitiesfromIndex - the lower-bound (inclusive) of the sub-intervalsize - the size of the sub-rangelength - the upper-bound (exclusive) of the rangefromIndex if the sub-range within bounds of the rangeIndexOutOfBoundsException - if the sub-range is out of boundspublic static long checkIndex(long index, long length)
index is within the bounds of the range from 0 (inclusive) to length (exclusive). The index is defined to be out of bounds if any of the following inequalities is true: 
index < 0index >= lengthlength < 0, which is implied from the former inequalitiesindex - the indexlength - the upper-bound (exclusive) of the rangeindex if it is within bounds of the rangeIndexOutOfBoundsException - if the index is out of boundspublic static long checkFromToIndex(long fromIndex, long toIndex, long length)
fromIndex (inclusive) to toIndex (exclusive) is within the bounds of range from 0 (inclusive) to length (exclusive). The sub-range is defined to be out of bounds if any of the following inequalities is true:
fromIndex < 0fromIndex > toIndextoIndex > lengthlength < 0, which is implied from the former inequalitiesfromIndex - the lower-bound (inclusive) of the sub-rangetoIndex - the upper-bound (exclusive) of the sub-rangelength - the upper-bound (exclusive) the rangefromIndex if the sub-range within bounds of the rangeIndexOutOfBoundsException - if the sub-range is out of boundspublic static long checkFromIndexSize(long fromIndex, long size, long length)
fromIndex (inclusive) to fromIndex + size (exclusive) is within the bounds of range from 0 (inclusive) to length (exclusive). The sub-range is defined to be out of bounds if any of the following inequalities is true:
fromIndex < 0size < 0fromIndex + size > length, taking into account integer overflowlength < 0, which is implied from the former inequalitiesfromIndex - the lower-bound (inclusive) of the sub-intervalsize - the size of the sub-rangelength - the upper-bound (exclusive) of the rangefromIndex if the sub-range within bounds of the rangeIndexOutOfBoundsException - if the sub-range is out of bounds
    © 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
    https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Objects.html