Top Description Inners Constructors Methods
com.google.common.base

public final Class MoreObjects

extends Object
Class Inheritance
Annotations
@GwtCompatible
@ElementTypesAreNonnullByDefault
Static Imports
com.google.common.base.Preconditions.checkNotNull

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

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

Author
Laurence Gonsalves
Since
18.0 (since 2.0 as Objects)

Nested and Inner Type Summary

Modifier and TypeClass and Description
public static class

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
public static <T> T

Returns:

first if it is non-null; otherwise second if it is non-null
firstNonNull
(T first, T second)

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

public static MoreObjects.ToStringHelper
toStringHelper(Object
the object to generate the string for (typically this), used only for its class name
self
)

Creates an instance of ToStringHelper.

public static MoreObjects.ToStringHelper
toStringHelper(Class<?>
the Class of the instance
clazz
)

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

public static MoreObjects.ToStringHelper
toStringHelper(String
the name of the instance type
className
)

Creates an instance of ToStringHelper in the same manner as toStringHelper(Object), but using className instead of using an instance's Object#getClass().

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Constructor Detail

MoreObjectsback to summary
private MoreObjects()

Method Detail

firstNonNullback to summary
public 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.

To find the first non-null element in an iterable, use Iterables.find(iterable, Predicates.notNull()). For varargs, use Iterables.find(Arrays.asList(a, b, c, ...), Predicates.notNull()), static importing as necessary.

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).

Java 9 users: use java.util.Objects.requireNonNullElse(first, second) instead.

Returns:T

first if it is non-null; otherwise second if it is non-null

Exceptions
NullPointerException:
if both first and second are null
Since
18.0 (since 3.0 as Objects.firstNonNull()).
toStringHelperback to summary
public static MoreObjects.ToStringHelper toStringHelper(Object self)

Creates an instance of 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:Object

the object to generate the string for (typically this), used only for its class name

Since
18.0 (since 2.0 as Objects.toStringHelper()).
toStringHelperback to summary
public static MoreObjects.ToStringHelper toStringHelper(Class<?> clazz)

Creates an instance of 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:Class<?>

the Class of the instance

Since
18.0 (since 7.0 as Objects.toStringHelper()).
toStringHelperback to summary
public static MoreObjects.ToStringHelper toStringHelper(String className)

Creates an instance of ToStringHelper in the same manner as toStringHelper(Object), but using className instead of using an instance's Object#getClass().

Parameters
className:String

the name of the instance type

Since
18.0 (since 7.0 as Objects.toStringHelper()).
com.google.common.base back to summary

public final Class MoreObjects.ToStringHelper

extends Object
Class Inheritance

Support class for MoreObjects#toStringHelper.
Author
Jason Lee
Since
18.0 (since 2.0 as Objects.ToStringHelper).

Nested and Inner Type Summary

Modifier and TypeClass and Description
private static class
MoreObjects.ToStringHelper.UnconditionalValueHolder

Holder object for values that cannot be null or empty (will be printed unconditionally).

private static class

Field Summary

Modifier and TypeField and Description
private final String
private final MoreObjects.ToStringHelper.ValueHolder
private MoreObjects.ToStringHelper.ValueHolder
private boolean
private boolean

Constructor Summary

AccessConstructor and Description
private
ToStringHelper(String className)

Use MoreObjects#toStringHelper(Object) to create an instance.

Method Summary

Modifier and TypeMethod and Description
public MoreObjects.ToStringHelper
add(String name, Object value)

Adds a name/value pair to the formatted output in name=value format.

public MoreObjects.ToStringHelper
add(String name, boolean value)

Adds a name/value pair to the formatted output in name=value format.

public MoreObjects.ToStringHelper
add(String name, char value)

Adds a name/value pair to the formatted output in name=value format.

public MoreObjects.ToStringHelper
add(String name, double value)

Adds a name/value pair to the formatted output in name=value format.

public MoreObjects.ToStringHelper
add(String name, float value)

Adds a name/value pair to the formatted output in name=value format.

public MoreObjects.ToStringHelper
add(String name, int value)

Adds a name/value pair to the formatted output in name=value format.

public MoreObjects.ToStringHelper
add(String name, long value)

Adds a name/value pair to the formatted output in name=value format.

private MoreObjects.ToStringHelper.ValueHolder
private MoreObjects.ToStringHelper
private MoreObjects.ToStringHelper
addHolder(String name, Object value)

private MoreObjects.ToStringHelper.UnconditionalValueHolder
private MoreObjects.ToStringHelper
private MoreObjects.ToStringHelper
public MoreObjects.ToStringHelper
addValue(Object value)

Adds an unnamed value to the formatted output.

public MoreObjects.ToStringHelper
addValue(boolean value)

Adds an unnamed value to the formatted output.

public MoreObjects.ToStringHelper
addValue(char value)

Adds an unnamed value to the formatted output.

public MoreObjects.ToStringHelper
addValue(double value)

Adds an unnamed value to the formatted output.

public MoreObjects.ToStringHelper
addValue(float value)

Adds an unnamed value to the formatted output.

public MoreObjects.ToStringHelper
addValue(int value)

Adds an unnamed value to the formatted output.

public MoreObjects.ToStringHelper
addValue(long value)

Adds an unnamed value to the formatted output.

private static boolean
isEmpty(Object value)

public MoreObjects.ToStringHelper
omitNullValues()

Configures the ToStringHelper so toString() will ignore properties with null value.

public String
toString()

Overrides java.lang.Object.toString.

Returns a string in the format specified by MoreObjects#toStringHelper(Object).
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAllwaitwaitwait

Field Detail

classNameback to summary
private final String className
holderHeadback to summary
private final MoreObjects.ToStringHelper.ValueHolder holderHead
holderTailback to summary
private MoreObjects.ToStringHelper.ValueHolder holderTail
omitEmptyValuesback to summary
private boolean omitEmptyValues
omitNullValuesback to summary
private boolean omitNullValues

Constructor Detail

ToStringHelperback to summary
private ToStringHelper(String className)

Use MoreObjects#toStringHelper(Object) to create an instance.

Method Detail

addback to summary
public MoreObjects.ToStringHelper add(String name, Object value)

Adds a name/value pair to the formatted output in name=value format. If value is null, the string "null" is used, unless omitNullValues() is called, in which case this name/value pair will not be added.

Annotations
@CanIgnoreReturnValue
addback to summary
public MoreObjects.ToStringHelper add(String name, boolean value)

Adds a name/value pair to the formatted output in name=value format.

Annotations
@CanIgnoreReturnValue
Since
18.0 (since 11.0 as Objects.ToStringHelper.add()).
addback to summary
public MoreObjects.ToStringHelper add(String name, char value)

Adds a name/value pair to the formatted output in name=value format.

Annotations
@CanIgnoreReturnValue
Since
18.0 (since 11.0 as Objects.ToStringHelper.add()).
addback to summary
public MoreObjects.ToStringHelper add(String name, double value)

Adds a name/value pair to the formatted output in name=value format.

Annotations
@CanIgnoreReturnValue
Since
18.0 (since 11.0 as Objects.ToStringHelper.add()).
addback to summary
public MoreObjects.ToStringHelper add(String name, float value)

Adds a name/value pair to the formatted output in name=value format.

Annotations
@CanIgnoreReturnValue
Since
18.0 (since 11.0 as Objects.ToStringHelper.add()).
addback to summary
public MoreObjects.ToStringHelper add(String name, int value)

Adds a name/value pair to the formatted output in name=value format.

Annotations
@CanIgnoreReturnValue
Since
18.0 (since 11.0 as Objects.ToStringHelper.add()).
addback to summary
public MoreObjects.ToStringHelper add(String name, long value)

Adds a name/value pair to the formatted output in name=value format.

Annotations
@CanIgnoreReturnValue
Since
18.0 (since 11.0 as Objects.ToStringHelper.add()).
addHolderback to summary
private MoreObjects.ToStringHelper.ValueHolder addHolder()
addHolderback to summary
private MoreObjects.ToStringHelper addHolder(Object value)
Annotations
@CanIgnoreReturnValue
addHolderback to summary
private MoreObjects.ToStringHelper addHolder(String name, Object value)
Annotations
@CanIgnoreReturnValue
addUnconditionalHolderback to summary
private MoreObjects.ToStringHelper.UnconditionalValueHolder addUnconditionalHolder()
addUnconditionalHolderback to summary
private MoreObjects.ToStringHelper addUnconditionalHolder(Object value)
Annotations
@CanIgnoreReturnValue
addUnconditionalHolderback to summary
private MoreObjects.ToStringHelper addUnconditionalHolder(String name, Object value)
Annotations
@CanIgnoreReturnValue
addValueback to summary
public MoreObjects.ToStringHelper addValue(Object value)

Adds an unnamed value to the formatted output.

It is strongly encouraged to use add(String, Object) instead and give value a readable name.

Annotations
@CanIgnoreReturnValue
addValueback to summary
public MoreObjects.ToStringHelper addValue(boolean value)

Adds an unnamed value to the formatted output.

It is strongly encouraged to use add(String, boolean) instead and give value a readable name.

Annotations
@CanIgnoreReturnValue
Since
18.0 (since 11.0 as Objects.ToStringHelper.addValue()).
addValueback to summary
public MoreObjects.ToStringHelper addValue(char value)

Adds an unnamed value to the formatted output.

It is strongly encouraged to use add(String, char) instead and give value a readable name.

Annotations
@CanIgnoreReturnValue
Since
18.0 (since 11.0 as Objects.ToStringHelper.addValue()).
addValueback to summary
public MoreObjects.ToStringHelper addValue(double value)

Adds an unnamed value to the formatted output.

It is strongly encouraged to use add(String, double) instead and give value a readable name.

Annotations
@CanIgnoreReturnValue
Since
18.0 (since 11.0 as Objects.ToStringHelper.addValue()).
addValueback to summary
public MoreObjects.ToStringHelper addValue(float value)

Adds an unnamed value to the formatted output.

It is strongly encouraged to use add(String, float) instead and give value a readable name.

Annotations
@CanIgnoreReturnValue
Since
18.0 (since 11.0 as Objects.ToStringHelper.addValue()).
addValueback to summary
public MoreObjects.ToStringHelper addValue(int value)

Adds an unnamed value to the formatted output.

It is strongly encouraged to use add(String, int) instead and give value a readable name.

Annotations
@CanIgnoreReturnValue
Since
18.0 (since 11.0 as Objects.ToStringHelper.addValue()).
addValueback to summary
public MoreObjects.ToStringHelper addValue(long value)

Adds an unnamed value to the formatted output.

It is strongly encouraged to use add(String, long) instead and give value a readable name.

Annotations
@CanIgnoreReturnValue
Since
18.0 (since 11.0 as Objects.ToStringHelper.addValue()).
isEmptyback to summary
private static boolean isEmpty(Object value)
omitNullValuesback to summary
public MoreObjects.ToStringHelper omitNullValues()

Configures the ToStringHelper so toString() will ignore properties with null value. The order of calling this method, relative to the add()/addValue() methods, is not significant.

Annotations
@CanIgnoreReturnValue
Since
18.0 (since 12.0 as Objects.ToStringHelper.omitNullValues()).
toStringback to summary
public String toString()

Overrides java.lang.Object.toString.

Returns a string in the format specified by MoreObjects#toStringHelper(Object).

After calling this method, you can keep adding more properties to later call toString() again and get a more complete representation of the same object; but properties cannot be removed, so this only allows limited reuse of the helper instance. The helper allows duplication of properties (multiple name/value pairs with the same name can be added).

Returns:String

Doc from java.lang.Object.toString.

a string representation of the object.

Annotations
@Override
com.google.common.base back to summary

private final Class MoreObjects.ToStringHelper.UnconditionalValueHolder

extends ValueHolder
Class Inheritance

Holder object for values that cannot be null or empty (will be printed unconditionally). This helps to shortcut most calls to isEmpty(), which is important because the check for emptiness is relatively expensive. Use a subtype so this also doesn't need any extra storage.

Constructor Summary

AccessConstructor and Description
private

Constructor Detail

UnconditionalValueHolderback to summary
private UnconditionalValueHolder()
com.google.common.base back to summary

private Class MoreObjects.ToStringHelper.ValueHolder

extends Object
Class Inheritance
  • java.lang.Object
  • com.google.common.base.MoreObjects.ToStringHelper.ValueHolder
Known Direct Subclasses
com.google.common.base.MoreObjects.ToStringHelper.UnconditionalValueHolder

Field Summary

Modifier and TypeField and Description
pack-priv String
pack-priv MoreObjects.ToStringHelper.ValueHolder
pack-priv Object

Constructor Summary

AccessConstructor and Description
private

Field Detail

nameback to summary
pack-priv String name
Annotations
@CheckForNull
nextback to summary
pack-priv MoreObjects.ToStringHelper.ValueHolder next
Annotations
@CheckForNull
valueback to summary
pack-priv Object value
Annotations
@CheckForNull

Constructor Detail

ValueHolderback to summary
private ValueHolder()