所在包:java.util
Objects工具包常用于验证对象的类型或是否为null及访问数组是否越界等。
常用方法:
1. 检查数组是否越界
(1) checkFromIndexSize
// 检查是否在子范围从 fromIndex (包括)到 fromIndex + size (不包括)是范围界限内 0 (包括)到 length (不包括)。
public static int checkFromIndexSize(int fromIndex, int size, int length)
(2) checkFromToIndex
// 检查是否在子范围从 fromIndex (包括)到 toIndex (不包括)是范围界限内 0 (包括)到 length (不包括)。
public static int checkFromToIndex(int fromIndex, int toIndex, int length)
(3) checkIndex
// 检查 index是否在 0 (含)到 length (不包括)范围内。
public static int checkIndex(int index, int length)
2. 判断两个对象是否相等
(1) equals 浅层相等
// 相等返回true,不相等返回false
public static boolean equals(Object a, Object b)
// true
Objects.equals(null, null);
// 相当于a.equals(b)
Objects.equals(a, b);
如果a和b均为null,则返回true;
如果a和b均为对象,则调用a的equals方法与b进行比较
(2) deepEquals 深层相等
// 相等返回true,不相等返回false
public static boolean deepEquals(Object a, Object b)
这里的深层相等是相对于数组来说的,如果a和b均为null,则直接返回true;
如果a和b均为数组,这里会直接调用Arrays.deepEquals。
注:equals和deepEquals的区别
它们的区别只能体现在二维及以上的数组,deepEquals设计初衷在于比较高维数组是否能按顺序一一相等,而equals做不到
3. 判断对象是否为null
(1) isNull
// 是null就返回true,不是则返回false
public static boolean isNull(Object obj)
(2) nonNull
// 是null就返回false,不是则返回true
public static boolean nonNull(Object obj)
(3) requireNonNullElse
// 非null就返回第一个参数,是null就返回第二个参数
public static <T> T requireNonNullElse(T obj, T defaultObj)
(4) requireNonNullElseGet
// 非null就返回第一个参数,是null就返回实现了Supplier接口且类型为T子类的对象
public static <T> T requireNonNullElseGet(T obj, Supplier<? extends T> supplier)
(5) requireNonNull
// 非null就返回第一个参数,是null就返回实现了Supplier接口且类型为字符串的对象
public static <T> T requireNonNull(T obj, Supplier<String> messageSupplier)
参考文献:JDK 11 API中文帮助文档