MoreObjects是一个辅助类,提供了那些在Objects中没有提供的方法。
T firstNonNull(@Nullable T first, @Nullable T second)。找出first和second中第一个不为空的对象,并返回,如果都为空,抛出空指针异常。目前在项目中用来设置默认值,也不知道是否合理。
ToStringHelper toStringHelper(Object self);该方法是为了创建一个ToStringHelper的实例,为了辅助实现Object的toString方法。
还有ToStringHelper toStringHelper(Class<?> clazz);以及ToStringHelper toStringHelper( String className);这三个方法都是要获取到className,传给ToStringHelper的构造函数。
ToStringHelper中用节点的形式存储每个add进去的属性,节点为ValueHolder:
private static final class ValueHolder {
@Nullable String name;
@Nullable Object value;
@Nullable ValueHolder next;
}
ToStringHelper中可以调用add(String name, T value),以及addValue(T value),通过调用addHolder添加节点。
其中的toString方法则会遍历所有的节点,然后打印出方法以及属性名和属性值。