Objects
java.lang.Object
|—java.util.Objects
public final class Objects
extends Object
此类包含用于对对象进行操作的静态实用程序方法。 这些实用程序包括用于计算对象的哈希码、返回对象的字符串以及比较两个对象的空值安全或空值容忍方法。
方法总结
修饰符和类型 | 方法 | 描述 |
---|---|---|
static <T> int | compare(T a, T b, Comparator<? super T> c) | 如果参数相同则返回 0,否则返回 c.compare(a, b)。 |
static boolean | deepEquals(Object a, Object b) | 如果参数彼此高度相等,则返回 true,否则返回 false。 |
static boolean | equals(Object a, Object b) | 如果参数彼此相等,则返回 true,否则返回 false。 |
static int | hash(Object… values) | 为一系列输入值生成哈希码。 |
static int | hashCode(Object o) | 返回非空参数的哈希码,空参数返回 0。 |
static boolean | isNull(Object obj) | 如果提供的引用为 null,则返回 true,否则返回 false。 |
static boolean | nonNull(Object obj) | 如果提供的引用为非 null,则返回 true,否则返回 false。 |
static <T> T | requireNonNull(T obj) | 检查指定的对象引用不为空。 |
static <T> T | requireNonNull(T obj, String message) | 检查指定的对象引用是否不为空,如果是则抛出自定义的 NullPointerException。 |
static <T> T | requireNonNull(T obj, SupplierString messageSupplier) | 检查指定的对象引用是否不为空,如果是则抛出自定义的 NullPointerException。 |
static String | toString(Object o) | 返回为非 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,则返回 false。 否则,相等性通过使用第一个参数的 Object#equals 方法来确定。
参数:
参数名称 | 参数描述 |
---|---|
a | 一个对象 |
b | 一个要与 a 比较的对象以求相等 |
返回:
如果参数彼此相等,则为 true,否则为 false
deepEquals
public static boolean deepEquals(Object a, Object b)
如果参数彼此高度相等,则返回 true,否则返回 false。 两个空值非常相等。 如果两个参数都是数组,则使用 Arrays#deepEquals(Object[], Object[]) 中的算法来确定相等性。 否则,相等性通过使用第一个参数的 Object#equals 方法来确定。
参数:
参数名称 | 参数描述 |
---|---|
a | 一个对象 |
b | 一个要与 a 进行比较的对象以实现深度相等 |
返回:
如果参数彼此高度相等,则为 true,否则为 false
hashCode
public static int hashCode(Object o)
返回非空参数的哈希码,空参数返回 0。
参数:
参数名称 | 参数描述 |
---|---|
o | 一个对象 |
返回:
非空参数的哈希码和空参数的 0
hash
public static int hash(Object… values)
为一系列输入值生成哈希码。 哈希码的生成就像将所有输入值放入一个数组中一样,并且该数组通过调用 [Arrays#hashCode(Object]) 进行了哈希处理。
此方法对于在包含多个字段的对象上实现 Object#hashCode() 很有用。 例如,如果一个对象具有三个字段 x、y 和 z,则可以这样写:
@Override public int hashCode() {
return Objects.hash(x, y, z);
}
警告:当提供单个对象引用时,返回值不等于该对象引用的哈希码。 这个值可以通过调用 hashCode(java.lang.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 | 如果第一个参数为空,则返回字符串 |
返回:
如果第一个参数不为空,则对第一个参数调用 toString 的结果,否则为第二个参数。
compare
public static <T> int compare(T a, T b, Comparator<? super T> c)
如果参数相同则返回 0,否则返回 c.compare(a, b)。 因此,如果两个参数都为空,则返回 0。
请注意,如果其中一个参数为空,则可能会或可能不会抛出 NullPointerException,具体取决于比较器为空值选择的排序策略(如果有)。
类型参数:
类型参数名称 | 类型参数描述 |
---|---|
T | 被比较的对象的类型 |
参数:
参数名称 | 参数描述 |
---|---|
a | 一个对象 |
b | 一个要与之比较的对象 |
c | Comparator 比较前两个参数 |
返回:
如果参数相同,则为 0,否则为 c.compare(a, b)。
requireNonNull
public static <T> T requireNonNull(T obj)
检查指定的对象引用不为空。 此方法主要用于在方法和构造函数中进行参数验证,如下所示:
public Foo(Bar bar) {
this.bar = Objects.requireNonNull(bar);
}
类型参数:
类型参数名称 | 类型参数描述 |
---|---|
T | 参考的类型 |
参数:
参数名称 | 参数描述 |
---|---|
obj | 检查无效性的对象引用 |
返回:
如果不为空,则为 obj
Throws:
Throw名称 | Throw描述 |
---|---|
NullPointerException | 如果 obj 为空 |
requireNonNull
public static <T> T requireNonNull(T obj, String message)
检查指定的对象引用是否不为空,如果是则抛出自定义的 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
Throws:
Throw名称 | Throw描述 |
---|---|
NullPointerException | 如果 obj 为空 |
isNull
public static boolean isNull(Object obj)
如果提供的引用为 null,则返回 true,否则返回 false。
参数:
参数名称 | 参数描述 |
---|---|
obj | 要针对 null 进行检查的引用 |
返回:
如果提供的引用为 null,则为 true,否则为 false
nonNull
public static boolean nonNull(Object obj)
如果提供的引用为非 null,则返回 true,否则返回 false。
参数:
参数名称 | 参数描述 |
---|---|
obj | 要针对 null 进行检查的引用 |
返回:
如果提供的引用不为空,则为 true,否则为 false
requireNonNull
public static <T> T requireNonNull(T obj, SupplierString messageSupplier)
检查指定的对象引用是否不为空,如果是则抛出自定义的 NullPointerException。
与方法 requireNonNull(java.lang.Object,java.lang.String) 不同,此方法允许将消息的创建推迟到进行空值检查之后。 虽然这可能会在非空情况下带来性能优势,但在决定调用此方法时,应注意创建消息提供者的成本低于直接创建字符串消息的成本。
类型参数:
类型参数名称 | 类型参数描述 |
---|---|
T | the type of the reference |
参数:
参数名称 | 参数描述 |
---|---|
obj | 检查无效性的对象引用 |
messageSupplier | 抛出 NullPointerException 时使用的详细消息的提供者 |
返回:
如果不为空,则为 obj
Throws:
Throw名称 | Throw描述 |
---|---|
NullPointerException | 如果 obj 为空 |