Java 常用类库之 Objects

Posted alterwl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 常用类库之 Objects相关的知识,希望对你有一定的参考价值。

完整名java.util.Objects

Objects无法被继承,也无法被实例化(构造器为private修饰)。Objects中包含的都是public static修饰的工具方法,这些工具方法是用于操作对象或者在操作对象前作某些检查工作的。

  1. equals()

    public static boolean equals(Object a, Object b) {}
    

    判断两个对象是否相等,返回true- 相等,false- 不等。使用Objects(a, b)判断相等的方式,比调用对象本身的equals()的方法更加安全,因为它允许对象值是null的情况。如果ab都为null则返回true,如果其中某一个为null而另一个不为null则返回false

  2. deepEquals()

    public static boolean deepEquals(Object a, Object b) {}
    

    判断两个对象是否深度相等。他和equals的不同的地方是,当ab都是数组时,会调用Arrays.deeqEquals()来判断两者是否相等。

  3. hashCode()

    public static int hashCode(Object o) {}
    

    返回o的哈希码(hash code),如果onull,则返回 0。

  4. hash()

    public static int hash(Object... values)
    

    为一个输入序列生成哈希码(hash code)。但是如果传入的是单个对象引用,那么它返回的哈希码不等于该对象引用的哈希码。

  5. toString()

    public static String toString(Object o) {}
    

    返回参数对象o本身的toString()调用结果。如果onull,则返回 "null"。

    public static String toString(Object o, String nullDefault) {}
    

    返回参数对象o本身的toString()调用结果。如果onull,则返回作为默认字符串的第二个参数nullDefault

  6. compare()

    public static <T> int compare(T a, T b, Comparator<? super T> c) {}
    

    比较两个参数对象,如果两者相同则返回 0。否则调用c.compare(a, b)并返回结果,它使用某种自定义的规则比较ab,返回值为整数表示a大于b,返回值为负数表示a小于b(0表示两者相同)。

  7. 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()方法提供的。

  8. isNull()

    public static boolean isNull(Object obj) {}
    

    判断给定参数对象引用是否为null。返回true代表为nullfalse代表非null

  9. notNull()

    public static boolean nonNull(Object obj) {}
    

    作用与isNull()相反,判断给定参数对象引用是否为非null。返回true代表为非nullfalse代表为null

  10. requireNonNullElse()

    public static <T> T requireNonNullElse(T obj, T defaultObj) {}
    

    如果第一个参数为非null,则返回第一个参数,否则返回第二个参数,第二个参数必须为非null,否则会抛出异常NullPointerException

  11. requireNonNullElseGet()

    public static <T> T requireNonNullElseGet(T obj, Supplier<? extends T> supplier) {}
    

    如果第一个参数为非null,则返回第一个参数,否则返回第二个参数supplier.get()的结果,给结果必须为非null,否则会抛出NullPointerException

以下是从 Java 9 开始加入的方法:

  1. checkIndex()

    int checkIndex(int index, int length) {}
    

    检查index是否包含在 0 到length(不包含)的范围内。如果在,则直接返回index,否则抛出IndexOutOfBoundsException

  2. checkFromToIndex()

    int checkFromToIndex(int fromIndex, int toIndex, int length) {}
    

    检查从fromIndextoIndex的子范围是否包含在 0 到length(不包含)的范围内。如果在,则返回fromIndex,否则抛出IndexOutOfBoundsException

  3. checkFromIndexSize()

    int checkFromIndexSize(int fromIndex, int size, int length) {}
    

    检查从fromIndexfromIndex+size的子范围是否包含在 0 到length(不包含)的范围内。如果在,则返回fromIndex,否则抛出IndexOutOfBoundsException

以上是关于Java 常用类库之 Objects的主要内容,如果未能解决你的问题,请参考以下文章

Java 常用类库之util包和text包

Java SE基础部分——常用类库之NumberFormat

Java 常用类库之 Arrays

Java 常用类库之 Math

Java 常用类库之util包和text包

Java 常用类库之lang包