Java 常用类库之 Objects
完整名java.util.Objects
Objects无法被继承,也无法被实例化(构造器为private修饰)。Objects中包含的都是public static修饰的工具方法,这些工具方法是用于操作对象或者在操作对象前作某些检查工作的。
-
equals()public static boolean equals(Object a, Object b) {}判断两个对象是否相等,返回
true- 相等,false- 不等。使用Objects(a, b)判断相等的方式,比调用对象本身的equals()的方法更加安全,因为它允许对象值是null的情况。如果a和b都为null则返回true,如果其中某一个为null而另一个不为null则返回false。 -
deepEquals()public static boolean deepEquals(Object a, Object b) {}判断两个对象是否深度相等。他和
equals的不同的地方是,当a和b都是数组时,会调用Arrays.deeqEquals()来判断两者是否相等。 -
hashCode()public static int hashCode(Object o) {}返回
o的哈希码(hash code),如果o为null,则返回 0。 -
hash()public static int hash(Object... values)为一个输入序列生成哈希码(hash code)。但是如果传入的是单个对象引用,那么它返回的哈希码不等于该对象引用的哈希码。
-
toString()public static String toString(Object o) {}返回参数对象
o本身的toString()调用结果。如果o为null,则返回 "null"。public static String toString(Object o, String nullDefault) {}返回参数对象
o本身的toString()调用结果。如果o为null,则返回作为默认字符串的第二个参数nullDefault。 -
compare()public static <T> int compare(T a, T b, Comparator<? super T> c) {}比较两个参数对象,如果两者相同则返回 0。否则调用
c.compare(a, b)并返回结果,它使用某种自定义的规则比较a和b,返回值为整数表示a大于b,返回值为负数表示a小于b(0表示两者相同)。 -
requireNonNull()public static <T> T requireNonNull(T obj) {}检查指定的对象
obj是否非空,如果为null则抛出NullPointerException。它主要用于在方法或构造函数中进行参数验证。public static <T> T requireNonNull(T obj, String message) {}requireNonNull()的重载方法,作用类似。它会在检查到参数为null时抛出一个带有给定信息message的异常NullPointerException。public static <T> T requireNonNull(T obj, Supplier<String> messageSupplier) {}requireNonNull()的重载方法,作用和上一个方法类似。不过它的异常信息时通过一个Supplier<String>类型的参数的get()方法提供的。 -
isNull()public static boolean isNull(Object obj) {}判断给定参数对象引用是否为
null。返回true代表为null,false代表非null。 -
notNull()public static boolean nonNull(Object obj) {}作用与
isNull()相反,判断给定参数对象引用是否为非null。返回true代表为非null,false代表为null。 -
requireNonNullElse()public static <T> T requireNonNullElse(T obj, T defaultObj) {}如果第一个参数为非
null,则返回第一个参数,否则返回第二个参数,第二个参数必须为非null,否则会抛出异常NullPointerException。 -
requireNonNullElseGet()public static <T> T requireNonNullElseGet(T obj, Supplier<? extends T> supplier) {}如果第一个参数为非
null,则返回第一个参数,否则返回第二个参数supplier.get()的结果,给结果必须为非null,否则会抛出NullPointerException。
以下是从 Java 9 开始加入的方法:
-
checkIndex()int checkIndex(int index, int length) {}检查
index是否包含在 0 到length(不包含)的范围内。如果在,则直接返回index,否则抛出IndexOutOfBoundsException。 -
checkFromToIndex()int checkFromToIndex(int fromIndex, int toIndex, int length) {}检查从
fromIndex到toIndex的子范围是否包含在 0 到length(不包含)的范围内。如果在,则返回fromIndex,否则抛出IndexOutOfBoundsException。 -
checkFromIndexSize()int checkFromIndexSize(int fromIndex, int size, int length) {}检查从
fromIndex到fromIndex+size的子范围是否包含在 0 到length(不包含)的范围内。如果在,则返回fromIndex,否则抛出IndexOutOfBoundsException。

浙公网安备 33010602011771号