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.- API Note:
- Static methods such as checkIndex(int, int),checkFromToIndex(int, int, int), andcheckFromIndexSize(int, int, int)are provided for the convenience of checking if values corresponding to indexes and sub-ranges are out of bounds. Variations of these static methods support customization of the runtime exception, and corresponding exception detail message, that is thrown when values are out of bounds. Such methods accept a functional interface argument, instances ofBiFunction, that maps out-of-bound values to a runtime exception. Care should be taken when using such methods in combination with an argument that is a lambda expression, method reference or class that capture values. In such cases the cost of capture, related to functional interface allocation, may exceed the cost of checking bounds.
- Since:
- 1.7
- 
Method SummaryModifier and Type Method Description static intcheckFromIndexSize(int fromIndex, int size, int length)Checks if the sub-range fromfromIndex(inclusive) tofromIndex + size(exclusive) is within the bounds of range from0(inclusive) tolength(exclusive).static intcheckFromToIndex(int fromIndex, int toIndex, int length)Checks if the sub-range fromfromIndex(inclusive) totoIndex(exclusive) is within the bounds of range from0(inclusive) tolength(exclusive).static intcheckIndex(int index, int length)Checks if theindexis within the bounds of the range from0(inclusive) tolength(exclusive).static <T> intcompare(T a, T b, Comparator<? super T> c)Returns 0 if the arguments are identical andc.compare(a, b)otherwise.static booleandeepEquals(Object a, Object b)Returnstrueif the arguments are deeply equal to each other andfalseotherwise.static booleanequals(Object a, Object b)Returnstrueif the arguments are equal to each other andfalseotherwise.static inthash(Object... values)Generates a hash code for a sequence of input values.static inthashCode(Object o)Returns the hash code of a non-nullargument and 0 for anullargument.static booleanisNull(Object obj)Returnstrueif the provided reference isnullotherwise returnsfalse.static booleannonNull(Object obj)Returnstrueif the provided reference is non-nullotherwise returnsfalse.static <T> TrequireNonNull(T obj)Checks that the specified object reference is notnull.static <T> TrequireNonNull(T obj, String message)Checks that the specified object reference is notnulland throws a customizedNullPointerExceptionif it is.static <T> TrequireNonNull(T obj, Supplier<String> messageSupplier)Checks that the specified object reference is notnulland throws a customizedNullPointerExceptionif it is.static <T> TrequireNonNullElse(T obj, T defaultObj)Returns the first argument if it is non-nulland otherwise returns the non-nullsecond argument.static <T> TrequireNonNullElseGet(T obj, Supplier<? extends T> supplier)Returns the first argument if it is non-nulland otherwise returns the non-nullvalue ofsupplier.get().static StringtoString(Object o)Returns the result of callingtoStringfor a non-nullargument and"null"for anullargument.static StringtoString(Object o, String nullDefault)Returns the result of callingtoStringon the first argument if the first argument is notnulland returns the second argument otherwise.
- 
Method Details- 
equalsReturnstrueif the arguments are equal to each other andfalseotherwise. Consequently, if both arguments arenull,trueis returned. Otherwise, if the first argument is notnull, equality is determined by calling theequalsmethod of the first argument with the second argument of this method. Otherwise,falseis returned.- Parameters:
- a- an object
- b- an object to be compared with- afor equality
- Returns:
- trueif the arguments are equal to each other and- falseotherwise
- See Also:
- Object.equals(Object)
 
- 
deepEqualsReturnstrueif the arguments are deeply equal to each other andfalseotherwise. Twonullvalues are deeply equal. If both arguments are arrays, the algorithm inArrays.deepEqualsis used to determine equality. Otherwise, equality is determined by using theequalsmethod of the first argument.- Parameters:
- a- an object
- b- an object to be compared with- afor deep equality
- Returns:
- trueif the arguments are deeply equal to each other and- falseotherwise
- See Also:
- Arrays.deepEquals(Object[], Object[]),- equals(Object, Object)
 
- 
hashCodeReturns the hash code of a non-nullargument and 0 for anullargument.- Parameters:
- o- an object
- Returns:
- the hash code of a non-nullargument and 0 for anullargument
- See Also:
- Object.hashCode()
 
- 
hashGenerates a hash code for a sequence of input values. The hash code is generated as if all the input values were placed into an array, and that array were hashed by callingArrays.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, andz, one could write:
 Warning: When a single object reference is supplied, the returned value does not equal the hash code of that object reference. This value can be computed by calling@Override public int hashCode() { return Objects.hash(x, y, z); }hashCode(Object).- Parameters:
- values- the values to be hashed
- Returns:
- a hash value of the sequence of input values
- See Also:
- Arrays.hashCode(Object[]),- List.hashCode()
 
- 
toStringReturns the result of callingtoStringfor a non-nullargument and"null"for anullargument.- Parameters:
- o- an object
- Returns:
- the result of calling toStringfor a non-nullargument and"null"for anullargument
- See Also:
- Object.toString(),- String.valueOf(Object)
 
- 
toStringReturns the result of callingtoStringon the first argument if the first argument is notnulland returns the second argument otherwise.- Parameters:
- o- an object
- nullDefault- string to return if the first argument is- null
- Returns:
- the result of calling toStringon the first argument if it is notnulland the second argument otherwise.
- See Also:
- toString(Object)
 
- 
compareReturns 0 if the arguments are identical andc.compare(a, b)otherwise. Consequently, if both arguments arenull0 is returned.Note that if one of the arguments is null, aNullPointerExceptionmay or may not be thrown depending on what ordering policy, if any, theComparatorchooses to have fornullvalues.- Type Parameters:
- T- the type of the objects being compared
- Parameters:
- a- an object
- b- an object to be compared with- a
- c- the- Comparatorto compare the first two arguments
- Returns:
- 0 if the arguments are identical and c.compare(a, b)otherwise.
- See Also:
- Comparable,- Comparator
 
- 
requireNonNullpublic static <T> T requireNonNull(T obj)Checks that the specified object reference is notnull. 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); }- Type Parameters:
- T- the type of the reference
- Parameters:
- obj- the object reference to check for nullity
- Returns:
- objif not- null
- Throws:
- NullPointerException- if- objis- null
 
- 
requireNonNullChecks that the specified object reference is notnulland throws a customizedNullPointerExceptionif 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"); }- Type Parameters:
- T- the type of the reference
- Parameters:
- obj- the object reference to check for nullity
- message- detail message to be used in the event that a- NullPointerExceptionis thrown
- Returns:
- objif not- null
- Throws:
- NullPointerException- if- objis- null
 
- 
isNullReturnstrueif the provided reference isnullotherwise returnsfalse.
- 
nonNullReturnstrueif the provided reference is non-nullotherwise returnsfalse.
- 
requireNonNullElsepublic static <T> T requireNonNullElse(T obj, T defaultObj)Returns the first argument if it is non-nulland otherwise returns the non-nullsecond argument.- Type Parameters:
- T- the type of the reference
- Parameters:
- obj- an object
- defaultObj- a non-- nullobject to return if the first argument is- null
- Returns:
- the first argument if it is non-nulland otherwise the second argument if it is non-null
- Throws:
- NullPointerException- if both- objis null and- defaultObjis- null
- Since:
- 9
 
- 
requireNonNullElseGetReturns the first argument if it is non-nulland otherwise returns the non-nullvalue ofsupplier.get().- Type Parameters:
- T- the type of the first argument and return type
- Parameters:
- obj- an object
- supplier- of a non-- nullobject to return if the first argument is- null
- Returns:
- the first argument if it is non-nulland otherwise the value fromsupplier.get()if it is non-null
- Throws:
- NullPointerException- if both- objis null and either the- supplieris- nullor the- supplier.get()value is- null
- Since:
- 9
 
- 
requireNonNullChecks that the specified object reference is notnulland throws a customizedNullPointerExceptionif 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.- Type Parameters:
- T- the type of the reference
- Parameters:
- obj- the object reference to check for nullity
- messageSupplier- supplier of the detail message to be used in the event that a- NullPointerExceptionis thrown
- Returns:
- objif not- null
- Throws:
- NullPointerException- if- objis- null
- Since:
- 1.8
 
- 
checkIndexpublic static int checkIndex(int index, int length)Checks if theindexis within the bounds of the range from0(inclusive) tolength(exclusive).The indexis defined to be out of bounds if any of the following inequalities is true:- index < 0
- index >= length
- length < 0, which is implied from the former inequalities
 - Parameters:
- index- the index
- length- the upper-bound (exclusive) of the range
- Returns:
- indexif it is within bounds of the range
- Throws:
- IndexOutOfBoundsException- if the- indexis out of bounds
- Since:
- 9
 
- 
checkFromToIndexpublic static int checkFromToIndex(int fromIndex, int toIndex, int length)Checks if the sub-range fromfromIndex(inclusive) totoIndex(exclusive) is within the bounds of range from0(inclusive) tolength(exclusive).The sub-range is defined to be out of bounds if any of the following inequalities is true: - fromIndex < 0
- fromIndex > toIndex
- toIndex > length
- length < 0, which is implied from the former inequalities
 - Parameters:
- fromIndex- the lower-bound (inclusive) of the sub-range
- toIndex- the upper-bound (exclusive) of the sub-range
- length- the upper-bound (exclusive) the range
- Returns:
- fromIndexif the sub-range within bounds of the range
- Throws:
- IndexOutOfBoundsException- if the sub-range is out of bounds
- Since:
- 9
 
- 
checkFromIndexSizepublic static int checkFromIndexSize(int fromIndex, int size, int length)Checks if the sub-range fromfromIndex(inclusive) tofromIndex + size(exclusive) is within the bounds of range from0(inclusive) tolength(exclusive).The sub-range is defined to be out of bounds if any of the following inequalities is true: - fromIndex < 0
- size < 0
- fromIndex + size > length, taking into account integer overflow
- length < 0, which is implied from the former inequalities
 - Parameters:
- fromIndex- the lower-bound (inclusive) of the sub-interval
- size- the size of the sub-range
- length- the upper-bound (exclusive) of the range
- Returns:
- fromIndexif the sub-range within bounds of the range
- Throws:
- IndexOutOfBoundsException- if the sub-range is out of bounds
- Since:
- 9
 
 
-