com.google.common.base

## Class MoreObjects

- java.lang.Object
- - com.google.common.base.MoreObjects

-     @GwtCompatible
      public final class MoreObjects
      extends java.lang.Object

  Helper functions that operate on any `Object`, and are not already provided in `Objects`.

  See the Guava User Guide on writing `Object` methods with `MoreObjects`.

  Since:
    18.0 (since 2.0 as `Objects`)

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `MoreObjects.ToStringHelper` Support class for `toStringHelper(java.lang.Object)`.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `static <T> T` | `firstNonNull(T first, T second)` Returns the first of two given parameters that is not `null`, if either is, or otherwise throws a `NullPointerException`.
    `static MoreObjects.ToStringHelper` | `toStringHelper(java.lang.Class<?> clazz)` Creates an instance of `MoreObjects.ToStringHelper` in the same manner as `toStringHelper(Object)`, but using the simple name of `clazz` instead of using an instance's `Object.getClass()`.
    `static MoreObjects.ToStringHelper` | `toStringHelper(java.lang.Object self)` Creates an instance of `MoreObjects.ToStringHelper`.
    `static MoreObjects.ToStringHelper` | `toStringHelper(java.lang.String className)` Creates an instance of `MoreObjects.ToStringHelper` in the same manner as `toStringHelper(Object)`, but using `className` instead of using an instance's `Object.getClass()`.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Method Detail

    - #### firstNonNull

          @CheckReturnValue
          public static <T> T firstNonNull(@Nullable
                                            T first,
                                            @Nullable
                                            T second)

      Returns the first of two given parameters that is not `null`, if either is, or otherwise throws a `NullPointerException`.

      Note: if `first` is represented as an `Optional`, this can be accomplished with `first.or(second)`. That approach also allows for lazy evaluation of the fallback instance, using `first.or(supplier)`.

      Returns:
        `first` if it is non-null; otherwise `second` if it is non-null
      Throws:
        `java.lang.NullPointerException` - if both `first` and `second` are null
      Since:
        18.0 (since 3.0 as `Objects.firstNonNull()`).

    - #### toStringHelper

          @CheckReturnValue
          public static MoreObjects.ToStringHelper toStringHelper(java.lang.Object self)

      Creates an instance of `MoreObjects.ToStringHelper`.

      This is helpful for implementing `Object.toString()`. Specification by example:

             // Returns "ClassName{}"
             MoreObjects.toStringHelper(this)
                 .toString();

             // Returns "ClassName{x=1}"
             MoreObjects.toStringHelper(this)
                 .add("x", 1)
                 .toString();

             // Returns "MyObject{x=1}"
             MoreObjects.toStringHelper("MyObject")
                 .add("x", 1)
                 .toString();

             // Returns "ClassName{x=1, y=foo}"
             MoreObjects.toStringHelper(this)
                 .add("x", 1)
                 .add("y", "foo")
                 .toString();

             // Returns "ClassName{x=1}"
             MoreObjects.toStringHelper(this)
                 .omitNullValues()
                 .add("x", 1)
                 .add("y", null)
                 .toString();
             }

      Note that in GWT, class names are often obfuscated.

      Parameters:
        `self` - the object to generate the string for (typically `this`), used only for its class name
      Since:
        18.0 (since 2.0 as `Objects.toStringHelper()`).

    - #### toStringHelper

          @CheckReturnValue
          public static MoreObjects.ToStringHelper toStringHelper(java.lang.Class<?> clazz)

      Creates an instance of `MoreObjects.ToStringHelper` in the same manner as `toStringHelper(Object)`, but using the simple name of `clazz` instead of using an instance's `Object.getClass()`.

      Note that in GWT, class names are often obfuscated.

      Parameters:
        `clazz` - the `Class` of the instance
      Since:
        18.0 (since 7.0 as `Objects.toStringHelper()`).

    - #### toStringHelper

          @CheckReturnValue
          public static MoreObjects.ToStringHelper toStringHelper(java.lang.String className)

      Creates an instance of `MoreObjects.ToStringHelper` in the same manner as `toStringHelper(Object)`, but using `className` instead of using an instance's `Object.getClass()`.
      Parameters:
        `className` - the name of the instance type
      Since:
        18.0 (since 7.0 as `Objects.toStringHelper()`).