java.lang.Object
java.util.Objects
此类由
static 实用方法组成,用于对对象进行操作,或在操作前检查某些条件。这些实用程序包括 null -safe 或 null -tolerant 方法,用于计算对象的哈希码、返回对象的字符串、比较两个对象以及检查索引或子范围值是否超出范围。
- 自从:
- 1.7
-
方法总结
修饰符和类型方法描述static intcheckFromIndexSize(int fromIndex, int size, int length) 检查从fromIndex(含)到fromIndex + size(不含)的子范围是否在从0(含)到length(不含)的范围范围内。static longcheckFromIndexSize(long fromIndex, long size, long length) 检查从fromIndex(含)到fromIndex + size(不含)的子范围是否在从0(含)到length(不含)的范围范围内。static intcheckFromToIndex(int fromIndex, int toIndex, int length) 检查从fromIndex(含)到toIndex(不含)的子范围是否在从0(含)到length(不含)的范围范围内。static longcheckFromToIndex(long fromIndex, long toIndex, long length) 检查从fromIndex(含)到toIndex(不含)的子范围是否在从0(含)到length(不含)的范围范围内。static intcheckIndex(int index, int length) 检查index是否在0(含)到length(不含)的范围内。static longcheckIndex(long index, long length) 检查index是否在0(含)到length(不含)的范围内。static <T> intcompare(T a, T b, Comparator<? super T> c) 如果参数相同则返回 0,否则返回c.compare(a, b)。static booleandeepEquals(Object a, Object b) 如果参数彼此深度相等,则返回true,否则返回false。static boolean如果参数彼此相等则返回true,否则返回false。static int为一系列输入值生成哈希码。static int返回非null参数的哈希码和null参数的 0。static boolean如果提供的引用是null,则返回true,否则返回false。static boolean如果提供的引用是非null则返回true否则返回false。static <T> TrequireNonNull(T obj) 检查指定的对象引用是否不是null。static <T> TrequireNonNull(T obj, String message) 检查指定的对象引用是否不是null,如果是则抛出自定义的NullPointerException。static <T> TrequireNonNull(T obj, Supplier<String> messageSupplier) 检查指定的对象引用是否不是null,如果是则抛出自定义的NullPointerException。static <T> TrequireNonNullElse(T obj, T defaultObj) 如果第一个参数是非null,则返回第一个参数,否则返回非null第二个参数。static <T> TrequireNonNullElseGet(T obj, Supplier<? extends T> supplier) 如果第一个参数是非null,则返回第一个参数,否则返回supplier.get()的非null值。static String如果该方法和hashCode未被覆盖,则返回一个与Object.toString返回的字符串等效的字符串。static String返回为非null参数调用toString和为null参数调用"null"的结果。static String如果第一个参数不是null,则返回对第一个参数调用toString的结果,否则返回第二个参数。
-
方法详情
-
equals
如果参数彼此相等则返回true,否则返回false。因此,如果两个参数都是null,则返回true。否则,如果第一个参数不是null,则通过使用此方法的第二个参数调用第一个参数的equals方法来确定是否相等。否则,返回false。- 参数:
a- 一个对象b- 要与a进行相等比较的对象- 返回:
true如果参数彼此相等,false否则- 参见:
-
deepEquals
如果参数彼此深度相等,则返回true,否则返回false。两个null值非常相等。如果两个参数都是数组,则使用Arrays.deepEquals中的算法来确定相等性。否则,将使用第一个参数的equals方法确定是否相等。- 参数:
a- 一个对象b- 要与a进行深度相等比较的对象- 返回:
true如果参数彼此完全相等,false否则- 参见:
-
hashCode
返回非null参数的哈希码和null参数的 0。- 参数:
o- 一个对象- 返回:
-
非
null参数的哈希码和null参数的0 - 参见:
-
hash
为一系列输入值生成哈希码。哈希代码的生成就好像所有输入值都被放入一个数组中,并且该数组通过调用Arrays.hashCode(Object[])进行了哈希处理。此方法对于在包含多个字段的对象上实施
Object.hashCode()很有用。例如,如果一个对象具有三个字段x、y和z,则可以这样写:
警告:当提供单个对象引用时,返回值不等于该对象引用的哈希码。这个值可以通过调用@Override public int hashCode() { return Objects.hash(x, y, z); }hashCode(Object)来计算。- 参数:
values- 要散列的值- 返回:
- 输入值序列的哈希值
- 参见:
-
toString
返回为非null参数调用toString和为null参数调用"null"的结果。- 参数:
o- 一个对象- 返回:
-
为非
null参数调用toString和为null参数调用"null"的结果 - 参见:
-
toString
如果第一个参数不是null,则返回对第一个参数调用toString的结果,否则返回第二个参数。- 参数:
o- 一个对象nullDefault- 如果第一个参数是null则返回的字符串- 返回:
-
如果第一个参数不是
null,则调用toString的结果,否则调用第二个参数。 - 参见:
-
toIdentityString
如果该方法和hashCode未被覆盖,则返回一个与Object.toString返回的字符串等效的字符串。- 实现要求:
-
该方法返回一个相当于以下内容的字符串:
o.getClass().getName() + "@" + Integer.toHexString(System.identityHashCode(o)) - 实现注意事项:
- 此方法为对象构造一个字符串,而不调用该对象的任何可重写方法。
- 参数:
o- 一个对象- 返回:
-
如果该方法和
hashCode未被覆盖,则相当于Object.toString返回的字符串的字符串 - 抛出:
NullPointerException- 如果参数为空- 自从:
- 19
- 参见:
-
compare
如果参数相同则返回 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- 如果obj是null
-
requireNonNull
检查指定的对象引用是否不是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- 如果obj是null
-
isNull
如果提供的引用是null,则返回true,否则返回false。- API 注意:
-
此方法的存在可用作
Predicate,filter(Objects::isNull) - 参数:
obj- 要对照null检查的参考- 返回:
true如果提供的参考是null否则false- 自从:
- 1.8
- 参见:
-
nonNull
如果提供的引用是非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为空且defaultObj为null- 自从:
- 9
-
requireNonNullElseGet
如果第一个参数是非null,则返回第一个参数,否则返回supplier.get()的非null值。- 类型参数:
T- 第一个参数的类型和返回类型- 参数:
obj- 一个对象supplier- 如果第一个参数是null则返回一个非null对象- 返回:
-
第一个参数,如果它是非
null,否则来自supplier.get()的值,如果它是非null - 抛出:
NullPointerException- 如果obj均为空且supplier为null或supplier.get()值为null- 自从:
- 9
-
requireNonNull
检查指定的对象引用是否不是null,如果是则抛出自定义的NullPointerException。与方法
requireNonNull(Object, String)不同,此方法允许将消息的创建推迟到进行空检查之后。虽然这可能在非空情况下带来性能优势,但在决定调用此方法时应注意创建消息供应商的成本低于直接创建字符串消息的成本。- 类型参数:
T- 引用的类型- 参数:
obj- 检查无效性的对象引用messageSupplier- 抛出NullPointerException时使用的详细消息的提供者- 返回:
obj如果不是null- 抛出:
NullPointerException- 如果obj是null- 自从:
- 1.8
-
checkIndex
public static int checkIndex(int index, int length) 检查index是否在0(含)到length(不含)的范围内。如果以下任何不等式为真,则
index被定义为越界:index < 0index >= lengthlength < 0,这是从前面的不等式暗示的
- 参数:
index- 索引length- 范围的上限(不包括)- 返回:
index如果它在范围内- 抛出:
IndexOutOfBoundsException- 如果index超出范围- 自从:
- 9
-
checkFromToIndex
public static int checkFromToIndex(int fromIndex, int toIndex, int length) 检查从fromIndex(含)到toIndex(不含)的子范围是否在从0(含)到length(不含)的范围范围内。如果以下任何不等式为真,则子范围被定义为超出范围:
fromIndex < 0fromIndex > toIndextoIndex > lengthlength < 0,这是从前面的不等式暗示的
- 参数:
fromIndex- 子范围的下限(含)toIndex- 子范围的上限(不包括)length- 上限(不包括)范围- 返回:
fromIndex如果子范围在范围的范围内- 抛出:
IndexOutOfBoundsException- 如果子范围超出范围- 自从:
- 9
-
checkFromIndexSize
public static int checkFromIndexSize(int fromIndex, int size, int length) 检查从fromIndex(含)到fromIndex + size(不含)的子范围是否在从0(含)到length(不含)的范围范围内。如果以下任何不等式为真,则子范围被定义为超出范围:
fromIndex < 0size < 0fromIndex + size > length,考虑到整数溢出length < 0,这是从前面的不等式暗示的
- 参数:
fromIndex- 子区间的下限(含)size- 子范围的大小length- 范围的上限(不包括)- 返回:
fromIndex如果子范围在范围的范围内- 抛出:
IndexOutOfBoundsException- 如果子范围超出范围- 自从:
- 9
-
checkIndex
public static long checkIndex(long index, long length) 检查index是否在0(含)到length(不含)的范围内。如果以下任何不等式为真,则
index被定义为越界:index < 0index >= lengthlength < 0,这是从前面的不等式暗示的
- 参数:
index- 索引length- 范围的上限(不包括)- 返回:
index如果它在范围内- 抛出:
IndexOutOfBoundsException- 如果index超出范围- 自从:
- 16
-
checkFromToIndex
public static long checkFromToIndex(long fromIndex, long toIndex, long length) 检查从fromIndex(含)到toIndex(不含)的子范围是否在从0(含)到length(不含)的范围范围内。如果以下任何不等式为真,则子范围被定义为超出范围:
fromIndex < 0fromIndex > toIndextoIndex > lengthlength < 0,这是从前面的不等式暗示的
- 参数:
fromIndex- 子范围的下限(含)toIndex- 子范围的上限(不包括)length- 上限(不包括)范围- 返回:
fromIndex如果子范围在范围的范围内- 抛出:
IndexOutOfBoundsException- 如果子范围超出范围- 自从:
- 16
-
checkFromIndexSize
public static long checkFromIndexSize(long fromIndex, long size, long length) 检查从fromIndex(含)到fromIndex + size(不含)的子范围是否在从0(含)到length(不含)的范围范围内。如果以下任何不等式为真,则子范围被定义为超出范围:
fromIndex < 0size < 0fromIndex + size > length,考虑到整数溢出length < 0,这是从前面的不等式暗示的
- 参数:
fromIndex- 子区间的下限(含)size- 子范围的大小length- 范围的上限(不包括)- 返回:
fromIndex如果子范围在范围的范围内- 抛出:
IndexOutOfBoundsException- 如果子范围超出范围- 自从:
- 16
-