模块 java.base
 java.util

类 Objects

java.lang.Object
java.util.Objects

public final class Objects extends Object
此类由 static 实用方法组成,用于对对象进行操作,或在操作前检查某些条件。这些实用程序包括 null -safe 或 null -tolerant 方法,用于计算对象的哈希码、返回对象的字符串、比较两个对象以及检查索引或子范围值是否超出范围。
自从:
1.7
  • 方法总结

    修饰符和类型
    方法
    描述
    static int
    checkFromIndexSize(int fromIndex, int size, int length)
    检查从 fromIndex(含)到 fromIndex + size(不含)的子范围是否在从 0(含)到 length(不含)的范围范围内。
    static long
    checkFromIndexSize(long fromIndex, long size, long length)
    检查从 fromIndex(含)到 fromIndex + size(不含)的子范围是否在从 0(含)到 length(不含)的范围范围内。
    static int
    checkFromToIndex(int fromIndex, int toIndex, int length)
    检查从 fromIndex(含)到 toIndex(不含)的子范围是否在从 0(含)到 length(不含)的范围范围内。
    static long
    checkFromToIndex(long fromIndex, long toIndex, long length)
    检查从 fromIndex(含)到 toIndex(不含)的子范围是否在从 0(含)到 length(不含)的范围范围内。
    static int
    checkIndex(int index, int length)
    检查 index 是否在 0(含)到 length(不含)的范围内。
    static long
    checkIndex(long index, long length)
    检查 index 是否在 0(含)到 length(不含)的范围内。
    static <T> int
    compare(T a, T b, Comparator<? super T> c)
    如果参数相同则返回 0,否则返回 c.compare(a, b)
    static boolean
    如果参数彼此深度相等,则返回 true,否则返回 false
    static boolean
    如果参数彼此相等则返回 true,否则返回 false
    static int
    hash(Object... values)
    为一系列输入值生成哈希码。
    static int
    返回非 null 参数的哈希码和 null 参数的 0。
    static boolean
    isNull(Object obj)
    如果提供的引用是 null,则返回 true,否则返回 false
    static boolean
    如果提供的引用是非 null 则返回 true 否则返回 false
    static <T> T
    检查指定的对象引用是否不是 null
    static <T> T
    requireNonNull(T obj, String message)
    检查指定的对象引用是否不是 null,如果是则抛出自定义的 NullPointerException
    static <T> T
    requireNonNull(T obj, Supplier<String> messageSupplier)
    检查指定的对象引用是否不是 null,如果是则抛出自定义的 NullPointerException
    static <T> T
    requireNonNullElse(T obj, T defaultObj)
    如果第一个参数是非null,则返回第一个参数,否则返回非null第二个参数。
    static <T> T
    requireNonNullElseGet(T obj, Supplier<? extends T> supplier)
    如果第一个参数是非null,则返回第一个参数,否则返回supplier.get()的非null值。
    static String
    如果该方法和 hashCode 未被覆盖,则返回一个与 Object.toString 返回的字符串等效的字符串。
    static String
    返回为非 null 参数调用 toString 和为 null 参数调用 "null" 的结果。
    static String
    toString(Object o, String nullDefault)
    如果第一个参数不是 null,则返回对第一个参数调用 toString 的结果,否则返回第二个参数。

    在类 java.lang.Object 中声明的方法

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 方法详情

    • equals

      public static boolean equals(Object  a, Object  b)
      如果参数彼此相等则返回 true,否则返回 false。因此,如果两个参数都是 null,则返回 true。否则,如果第一个参数不是 null ,则通过使用此方法的第二个参数调用第一个参数的 equals 方法来确定是否相等。否则,返回 false
      参数:
      a - 一个对象
      b - 要与 a 进行相等比较的对象
      返回:
      true 如果参数彼此相等,false 否则
      参见:
    • deepEquals

      public static boolean deepEquals(Object  a, Object  b)
      如果参数彼此深度相等,则返回 true,否则返回 false。两个 null 值非常相等。如果两个参数都是数组,则使用 Arrays.deepEquals 中的算法来确定相等性。否则,将使用第一个参数的 equals 方法确定是否相等。
      参数:
      a - 一个对象
      b - 要与 a 进行深度相等比较的对象
      返回:
      true 如果参数彼此完全相等,false 否则
      参见:
    • hashCode

      public static int hashCode(Object  o)
      返回非 null 参数的哈希码和 null 参数的 0。
      参数:
      o - 一个对象
      返回:
      null参数的哈希码和null参数的0
      参见:
    • hash

      public static int hash(Object ... values)
      为一系列输入值生成哈希码。哈希代码的生成就好像所有输入值都被放入一个数组中,并且该数组通过调用 Arrays.hashCode(Object[]) 进行了哈希处理。

      此方法对于在包含多个字段的对象上实施 Object.hashCode() 很有用。例如,如果一个对象具有三个字段 x yz ,则可以这样写:

       @Override public int hashCode() {
         return Objects.hash(x, y, z);
       }
       
      警告:当提供单个对象引用时,返回值不等于该对象引用的哈希码。这个值可以通过调用 hashCode(Object) 来计算。
      参数:
      values - 要散列的值
      返回:
      输入值序列的哈希值
      参见:
    • toString

      public static String  toString(Object  o)
      返回为非 null 参数调用 toString 和为 null 参数调用 "null" 的结果。
      参数:
      o - 一个对象
      返回:
      为非 null参数调用toString和为null参数调用"null"的结果
      参见:
    • toString

      public static String  toString(Object  o, String  nullDefault)
      如果第一个参数不是 null,则返回对第一个参数调用 toString 的结果,否则返回第二个参数。
      参数:
      o - 一个对象
      nullDefault - 如果第一个参数是 null 则返回的字符串
      返回:
      如果第一个参数不是 null,则调用 toString 的结果,否则调用第二个参数。
      参见:
    • toIdentityString

      public static String  toIdentityString(Object  o)
      如果该方法和 hashCode 未被覆盖,则返回一个与 Object.toString 返回的字符串等效的字符串。
      实现要求:
      该方法返回一个相当于以下内容的字符串:
      o.getClass().getName() + "@" + Integer.toHexString(System.identityHashCode(o))
      实现注意事项:
      此方法为对象构造一个字符串,而不调用该对象的任何可重写方法。
      参数:
      o - 一个对象
      返回:
      如果该方法和 hashCode 未被覆盖,则相当于 Object.toString 返回的字符串的字符串
      抛出:
      NullPointerException - 如果参数为空
      自从:
      19
      参见:
    • compare

      public static <T> int compare(T a, T b, Comparator <? super T> c)
      如果参数相同则返回 0,否则返回 c.compare(a, b)。因此,如果两个参数都是 null,则返回 0。

      请注意,如果其中一个参数是 null,则可能会或可能不会抛出 NullPointerException,具体取决于排序策略(如果有),Comparator 选择具有 null 值。

      类型参数:
      T - 被比较对象的类型
      参数:
      a - 一个对象
      b - 要与 a 进行比较的对象
      c - 比较前两个参数的 Comparator
      返回:
      如果参数相同则为 0,否则为 c.compare(a, b)
      参见:
    • requireNonNull

      public static <T> T requireNonNull(T obj)
      检查指定的对象引用是否不是 null 。此方法主要用于在方法和构造函数中进行参数验证,如下所示:
       public Foo(Bar bar) {
         this.bar = Objects.requireNonNull(bar);
       }
       
      类型参数:
      T - 引用的类型
      参数:
      obj - 检查无效性的对象引用
      返回:
      obj 如果不是 null
      抛出:
      NullPointerException - 如果 objnull
    • requireNonNull

      public static <T> T requireNonNull(T obj, String  message)
      检查指定的对象引用是否不是 null,如果是则抛出自定义的 NullPointerException 。此方法主要用于在具有多个参数的方法和构造函数中进行参数验证,如下所示:
       public Foo(Bar bar, Baz baz) {
         this.bar = Objects.requireNonNull(bar, "bar must not be null");
         this.baz = Objects.requireNonNull(baz, "baz must not be null");
       }
       
      类型参数:
      T - 引用的类型
      参数:
      obj - 检查无效性的对象引用
      message - 抛出 NullPointerException 时使用的详细消息
      返回:
      obj 如果不是 null
      抛出:
      NullPointerException - 如果 objnull
    • isNull

      public static boolean isNull(Object  obj)
      如果提供的引用是 null,则返回 true,否则返回 false
      API 注意:
      此方法的存在可用作 Predicate , filter(Objects::isNull)
      参数:
      obj - 要对照 null 检查的参考
      返回:
      true 如果提供的参考是 null 否则 false
      自从:
      1.8
      参见:
    • nonNull

      public static boolean nonNull(Object  obj)
      如果提供的引用是非 null 则返回 true 否则返回 false
      API 注意:
      此方法的存在可用作 Predicate , filter(Objects::nonNull)
      参数:
      obj - 要对照 null 检查的参考
      返回:
      true 如果提供的参考是非 null 否则 false
      自从:
      1.8
      参见:
    • requireNonNullElse

      public static <T> T requireNonNullElse(T obj, T defaultObj)
      如果第一个参数是非null,则返回第一个参数,否则返回非null第二个参数。
      类型参数:
      T - 引用的类型
      参数:
      obj - 一个对象
      defaultObj - 如果第一个参数是 null 则返回一个非 null 对象
      返回:
      第一个参数如果它是非null,否则第二个参数如果它是非null
      抛出:
      NullPointerException - 如果 obj 为空且 defaultObjnull
      自从:
      9
    • requireNonNullElseGet

      public static <T> T requireNonNullElseGet(T obj, Supplier <? extends T> supplier)
      如果第一个参数是非null,则返回第一个参数,否则返回supplier.get()的非null值。
      类型参数:
      T - 第一个参数的类型和返回类型
      参数:
      obj - 一个对象
      supplier - 如果第一个参数是 null 则返回一个非 null 对象
      返回:
      第一个参数,如果它是非null,否则来自supplier.get()的值,如果它是非null
      抛出:
      NullPointerException - 如果 obj 均为空且 suppliernullsupplier.get() 值为 null
      自从:
      9
    • requireNonNull

      public static <T> T requireNonNull(T obj, Supplier <String > messageSupplier)
      检查指定的对象引用是否不是 null,如果是则抛出自定义的 NullPointerException

      与方法 requireNonNull(Object, String) 不同,此方法允许将消息的创建推迟到进行空检查之后。虽然这可能在非空情况下带来性能优势,但在决定调用此方法时应注意创建消息供应商的成本低于直接创建字符串消息的成本。

      类型参数:
      T - 引用的类型
      参数:
      obj - 检查无效性的对象引用
      messageSupplier - 抛出 NullPointerException 时使用的详细消息的提供者
      返回:
      obj 如果不是 null
      抛出:
      NullPointerException - 如果 objnull
      自从:
      1.8
    • checkIndex

      public static int checkIndex(int index, int length)
      检查 index 是否在 0(含)到 length(不含)的范围内。

      如果以下任何不等式为真,则 index 被定义为越界:

      • index < 0
      • index >= length
      • length < 0 ,这是从前面的不等式暗示的
      参数:
      index - 索引
      length - 范围的上限(不包括)
      返回:
      index 如果它在范围内
      抛出:
      IndexOutOfBoundsException - 如果 index 超出范围
      自从:
      9
    • checkFromToIndex

      public static int checkFromToIndex(int fromIndex, int toIndex, int length)
      检查从 fromIndex(含)到 toIndex(不含)的子范围是否在从 0(含)到 length(不含)的范围范围内。

      如果以下任何不等式为真,则子范围被定义为超出范围:

      • fromIndex < 0
      • fromIndex > toIndex
      • toIndex > length
      • length < 0 ,这是从前面的不等式暗示的
      参数:
      fromIndex - 子范围的下限(含)
      toIndex - 子范围的上限(不包括)
      length - 上限(不包括)范围
      返回:
      fromIndex 如果子范围在范围的范围内
      抛出:
      IndexOutOfBoundsException - 如果子范围超出范围
      自从:
      9
    • checkFromIndexSize

      public static int checkFromIndexSize(int fromIndex, int size, int length)
      检查从 fromIndex(含)到 fromIndex + size(不含)的子范围是否在从 0(含)到 length(不含)的范围范围内。

      如果以下任何不等式为真,则子范围被定义为超出范围:

      • fromIndex < 0
      • size < 0
      • fromIndex + size > length ,考虑到整数溢出
      • length < 0 ,这是从前面的不等式暗示的
      参数:
      fromIndex - 子区间的下限(含)
      size - 子范围的大小
      length - 范围的上限(不包括)
      返回:
      fromIndex 如果子范围在范围的范围内
      抛出:
      IndexOutOfBoundsException - 如果子范围超出范围
      自从:
      9
    • checkIndex

      public static long checkIndex(long index, long length)
      检查 index 是否在 0(含)到 length(不含)的范围内。

      如果以下任何不等式为真,则 index 被定义为越界:

      • index < 0
      • index >= length
      • length < 0 ,这是从前面的不等式暗示的
      参数:
      index - 索引
      length - 范围的上限(不包括)
      返回:
      index 如果它在范围内
      抛出:
      IndexOutOfBoundsException - 如果 index 超出范围
      自从:
      16
    • checkFromToIndex

      public static long checkFromToIndex(long fromIndex, long toIndex, long length)
      检查从 fromIndex(含)到 toIndex(不含)的子范围是否在从 0(含)到 length(不含)的范围范围内。

      如果以下任何不等式为真,则子范围被定义为超出范围:

      • fromIndex < 0
      • fromIndex > toIndex
      • toIndex > length
      • length < 0 ,这是从前面的不等式暗示的
      参数:
      fromIndex - 子范围的下限(含)
      toIndex - 子范围的上限(不包括)
      length - 上限(不包括)范围
      返回:
      fromIndex 如果子范围在范围的范围内
      抛出:
      IndexOutOfBoundsException - 如果子范围超出范围
      自从:
      16
    • checkFromIndexSize

      public static long checkFromIndexSize(long fromIndex, long size, long length)
      检查从 fromIndex(含)到 fromIndex + size(不含)的子范围是否在从 0(含)到 length(不含)的范围范围内。

      如果以下任何不等式为真,则子范围被定义为超出范围:

      • fromIndex < 0
      • size < 0
      • fromIndex + size > length ,考虑到整数溢出
      • length < 0 ,这是从前面的不等式暗示的
      参数:
      fromIndex - 子区间的下限(含)
      size - 子范围的大小
      length - 范围的上限(不包括)
      返回:
      fromIndex 如果子范围在范围的范围内
      抛出:
      IndexOutOfBoundsException - 如果子范围超出范围
      自从:
      16