# ObjectsCompat

Artifact: [androidx.core:core](https://developer.android.com/jetpack/androidx/releases/core) [View Source](https://cs.android.com/search?q=file:androidx/core/util/ObjectsCompat.java+class:androidx.core.util.ObjectsCompat) Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/core#1.1.0)

*** ** * ** ***


```
public class ObjectsCompat
```

<br />

*** ** * ** ***

This class consists of static utility methods for operating on objects.

## Summary

| ### Public methods |
|---|---|
| `static boolean` | `https://developer.android.com/reference/androidx/core/util/ObjectsCompat#equals(java.lang.Object,java.lang.Object)(@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/Object.html a, @https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/Object.html b)` Returns `true` if the arguments are equal to each other and `false` otherwise. |
| `static int` | `https://developer.android.com/reference/androidx/core/util/ObjectsCompat#hash(java.lang.Object...)(@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html Object[] values)` Generates a hash code for a sequence of input values. |
| `static int` | `https://developer.android.com/reference/androidx/core/util/ObjectsCompat#hashCode(java.lang.Object)(@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/Object.html o)` Returns the hash code of a non-`null` argument and 0 for a `null` argument. |
| `static @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html T` | `<T> https://developer.android.com/reference/androidx/core/util/ObjectsCompat#requireNonNull(T)(@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html T obj)` Checks that the specified object reference is not `null`. |
| `static @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html T` | `<T> https://developer.android.com/reference/androidx/core/util/ObjectsCompat#requireNonNull(T,java.lang.String)(@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html T obj, @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/String.html message)` Checks that the specified object reference is not `null` and throws a customized `https://developer.android.com/reference/java/lang/NullPointerException.html` if it is. |
| `static @https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/core/util/ObjectsCompat#toString(java.lang.Object,java.lang.String)(@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/Object.html o, @https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/String.html nullDefault)` Returns the result of calling `toString` on the first argument if the first argument is not `null` and returns the second argument otherwise. |

## Public methods

### equals

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/core#1.1.0)

```
public static boolean equals(@Nullable Object a, @Nullable Object b)
```

Returns `true` if the arguments are equal to each other and `false` otherwise.

Consequently, if both arguments are `null`, `true` is returned and if exactly one argument is `null`, `
false` is returned. Otherwise, equality is determined by using the `https://developer.android.com/reference/java/lang/Object.html#equals(java.lang.Object)` method of the first argument.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/Object.html a` | an object |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/Object.html b` | an object to be compared with `a` for equality |

| Returns |
|---|---|
| `boolean` | `true` if the arguments are equal to each other and `false` otherwise |

| See also |
|---|---|
| `https://developer.android.com/reference/java/lang/Object.html#equals(java.lang.Object)` |   |

### hash

```
public static int hash(@Nullable Object[] values)
```

Generates 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 calling `https://developer.android.com/reference/java/util/Arrays.html#hashCode(java.lang.Object[])`.

This method is useful for implementing `https://developer.android.com/reference/java/lang/Object.html#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 ObjectsCompat.hash(x, y, z);
> }
> ```
**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 `https://developer.android.com/reference/androidx/core/util/ObjectsCompat#hashCode(java.lang.Object)`.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html Object[] values` | the values to be hashed |

| Returns |
|---|---|
| `int` | a hash value of the sequence of input values |

| See also |
|---|---|
| `https://developer.android.com/reference/java/util/Arrays.html#hashCode(java.lang.Object[])` |   |

### hashCode

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/core#1.1.0)

```
public static int hashCode(@Nullable Object o)
```

Returns the hash code of a non-`null` argument and 0 for a `null` argument.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/Object.html o` | an object |

| Returns |
|---|---|
| `int` | the hash code of a non-`null` argument and 0 for a `null` argument |

| See also |
|---|---|
| `https://developer.android.com/reference/java/lang/Object.html#hashCode()` |   |

### requireNonNull

Added in [1.6.0](https://developer.android.com/jetpack/androidx/releases/core#1.6.0)

```
public static @NonNull T <T> requireNonNull(@Nullable T obj)
```

Checks that the specified object reference is not `null`. This method is designed primarily for doing parameter validation in methods and constructors, as demonstrated below:
>
> ```
> public Foo(Bar bar) {
>     this.bar = ObjectsCompat.requireNonNull(bar);
> }
> ```

| Parameters |
|---|---|
| `<T>` | the type of the reference |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html T obj` | the object reference to check for nullity |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html T` | `obj` if not `null` |

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/NullPointerException.html` | if `obj` is `null` |

### requireNonNull

Added in [1.6.0](https://developer.android.com/jetpack/androidx/releases/core#1.6.0)

```
public static @NonNull T <T> requireNonNull(@Nullable T obj, @NonNull String message)
```

Checks that the specified object reference is not `null` and throws a customized `https://developer.android.com/reference/java/lang/NullPointerException.html` 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 = ObjectsCompat.requireNonNull(bar, "bar must not be null");
>     this.baz = ObjectsCompat.requireNonNull(baz, "baz must not be null");
> }
> ```

| Parameters |
|---|---|
| `<T>` | the type of the reference |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html T obj` | the object reference to check for nullity |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/String.html message` | detail message to be used in the event that a ` NullPointerException` is thrown |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html T` | `obj` if not `null` |

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/NullPointerException.html` | if `obj` is `null` |

### toString

Added in [1.5.0](https://developer.android.com/jetpack/androidx/releases/core#1.5.0)

```
public static @Nullable String toString(@Nullable Object o, @Nullable String nullDefault)
```

Returns the result of calling `toString` on the first argument if the first argument is not `null` and returns the second argument otherwise.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/Object.html o` | an object |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/String.html nullDefault` | string to return if the first argument is `null` |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/String.html` | the result of calling `toString` on the first argument if it is not ` null` and the second argument otherwise. |