常用类库-java.util.Objects

常用类库-java.util.Objects

简介

类名:public final class Objects extends Object

该类使用 final 修饰,无法被继承,类中包含 static 方法,使用类名可直接调用,方法多用于操作对象或在操作前检查某些条件。

常用方法

checkFromIndexSize

方法名:public static int checkFromIndexSize(int fromIndex, int size, int length)

作用:

判断区间 [ fromIndex , fromIndex + size ) 是否是 [ 0 , length ) 的子区间。

结果为 true 则返回 fromIndex

结果为 false 或者三个参数中的任意一个小于0则抛出异常 IndexOutOfBoundsException

实现源码:

public static <X extends RuntimeException>
int checkFromIndexSize(int fromIndex, int size, int length,
                       BiFunction<String, List<Integer>, X> oobef) {
	if ((length | fromIndex | size) < 0 || size > length - fromIndex)
        throw outOfBoundsCheckFromIndexSize(oobef, fromIndex, size, length);
    return fromIndex;
}

checkFromToIndex

方法名:public static int checkFromToIndex(int fromIndex, int toIndex, int length)

作用:

判断区间 [ fromIndex , toIndex ) 是否是 [ 0 , length ) 的子区间。

结果为 true 则返回 fromIndex

结果为 false 或者三个参数中的任意一个小于0则抛出异常 IndexOutOfBoundsException

实现源码:

public static <X extends RuntimeException>
    int checkFromToIndex(int fromIndex, int toIndex, int length,
                         BiFunction<String, List<Integer>, X> oobef) {
        if (fromIndex < 0 || fromIndex > toIndex || toIndex > length)
            throw outOfBoundsCheckFromToIndex(oobef, fromIndex, toIndex, length);
        return fromIndex;
}

checkIndex

方法名:public static int checkIndex(int index, int length)

作用:

判断区间 [ 0 , index ) 是否是 [ 0 , length ) 的子区间 ,其中 index 不能等于 length 。

简单理解就是,index < length,使用场景可以是判断一个下标是否在数组范围内。

结果为 true 则返回 index

结果为 false 或者两个参数中的任意一个小于0则抛出异常 IndexOutOfBoundsException

实现源码:

 public static <X extends RuntimeException>
    int checkIndex(int index, int length,
                   BiFunction<String, List<Integer>, X> oobef) {
        if (index < 0 || index >= length)
            throw outOfBoundsCheckIndex(oobef, index, length);
        return index;
 }

equals

方法名:public static boolean equals(Object a, Object b)

作用:

判断对象 a 与对象 b 是否相等,相等则返回 true 否则 false 。

objects 的父类 object 同样有 equals 方法,当使用父类的方法时,若对象引用为 null 则会产生异常。而 objects 的 equals 方法即使传入的参数为 null 也可以比较。

实现源码:

public static boolean equals(Object a, Object b) {
        return (a == b) || (a != null && a.equals(b));
}

方法中有调用父类的 equals ,但是调用前已进行了非空的验证( && 为短路与,当运算符左边为 false 时结果就是 false ,运算符右边的条件不会再判断),所以此处调用不会产生异常。

deepEquals

方法名:public static boolean deepEquals(Object a, Object b)

作用:

判断对象 a 与对象 b 是否深层相等,相等的判断同 equals ,深层相等理解为如果两个对象是数组对象,则更深入的比较数组里的值是否相等。应用场景是比较两个数组对象。

实现源码:

public static boolean deepEquals(Object a, Object b) {
    if (a == b)
        return true;
    else if (a == null || b == null)
        return false;
    else
        return Arrays.deepEquals0(a, b);
}

isNull

方法名:public static boolean isNull(Object obj)

作用:

判断传入对象 obj 是否为 null ,是则返回 true 否则返回 false 。

noNull

方法名:public static boolean noNull(Object obj)

作用:

判断传入对象 obj 是否为 null ,是则返回 false 否则返回 true ,其作用与 isNull 相反。

requireNonNull

方法名:public static <T> T requireNonNull(T obj)

作用:

验证传入对象 obj 是否为 null ,不是则返回该对象,是则抛出空指针异常 NullPointerException

方法名:public static <T> T requireNonNull(T obj,String message)

作用:

验证传入对象 obj 是否为 null ,不是则返回该对象,是则抛出自定义的空指针异常 NullPointerException

requireNonNullElse

方法名:public static <T> T requireNonNullElse(T obj, T defaultObj)

作用:

验证传入对象 obj 是否为 null ,不是则返回第一个参数对象 obj ,否则返回第二个参数对象 defaultObj ,若第二个参数对象也为 null 则抛出一个自定义的空指针异常 NullPointerException,信息为” defaultObj “。

实现源码:

public static <T> T requireNonNullElse(T obj, T defaultObj) {
	return (obj != null) ? obj : requireNonNull(defaultObj, "defaultObj");
}

toString

方法名:public static String toString(Object o)

作用:

验证传入对象 o 是否为 null ,是则返回 “ null ”,不是则调用对象 o 的 toString 方法。

方法名:public static String toString(Object o,String nullDefault)

作用:

验证传入对象 o 是否为 null ,是则返回 nullDefault ,不是则调用对象 o 的 toString 方法。

hashCode

方法名:public int hashCode()

作用:

atic String toString(Object o,String nullDefault)`

作用:

验证传入对象 o 是否为 null ,是则返回 nullDefault ,不是则调用对象 o 的 toString 方法。

hashCode

方法名:public int hashCode()

作用:

返回对象的哈希码值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值