W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
java.lang.Object
|---java.util.Objects
public final class Objects
extends Object
此類包含用于對(duì)對(duì)象進(jìn)行操作的靜態(tài)實(shí)用程序方法。 這些實(shí)用程序包括用于計(jì)算對(duì)象的哈希碼、返回對(duì)象的字符串以及比較兩個(gè)對(duì)象的空值安全或空值容忍方法。
修飾符和類型 | 方法 | 描述 |
---|---|---|
static <T> int | compare(T a, T b, Comparator<? super T> c) | 如果參數(shù)相同則返回 0,否則返回 c.compare(a, b)。 |
static boolean | deepEquals(Object a, Object b) | 如果參數(shù)彼此高度相等,則返回 true,否則返回 false。 |
static boolean | equals(Object a, Object b) | 如果參數(shù)彼此相等,則返回 true,否則返回 false。 |
static int | hash(Object... values) | 為一系列輸入值生成哈希碼。 |
static int | hashCode(Object o) | 返回非空參數(shù)的哈希碼,空參數(shù)返回 0。 |
static boolean | isNull(Object obj) | 如果提供的引用為 null,則返回 true,否則返回 false。 |
static boolean | nonNull(Object obj) | 如果提供的引用為非 null,則返回 true,否則返回 false。 |
static <T> T | requireNonNull(T obj) | 檢查指定的對(duì)象引用不為空。 |
static <T> T | requireNonNull(T obj, String message) | 檢查指定的對(duì)象引用是否不為空,如果是則拋出自定義的 NullPointerException。 |
static <T> T | requireNonNull(T obj, SupplierString messageSupplier) | 檢查指定的對(duì)象引用是否不為空,如果是則拋出自定義的 NullPointerException。 |
static String | toString(Object o) | 返回為非 null 參數(shù)調(diào)用 toString 和為 null 參數(shù)調(diào)用“null”的結(jié)果。 |
static String | toString(Object o, String nullDefault) | 如果第一個(gè)參數(shù)不為 null,則返回對(duì)第一個(gè)參數(shù)調(diào)用 toString 的結(jié)果,否則返回第二個(gè)參數(shù)。 |
從類 java.lang.Object 繼承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
public static boolean equals(Object a, Object b)
如果參數(shù)彼此相等,則返回 true,否則返回 false。 因此,如果兩個(gè)參數(shù)都為 null,則返回 true,如果恰好一個(gè)參數(shù)為 null,則返回 false。 否則,相等性通過(guò)使用第一個(gè)參數(shù)的 Object#equals 方法來(lái)確定。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
a | 一個(gè)對(duì)象 |
b | 一個(gè)要與 a 比較的對(duì)象以求相等 |
返回:
如果參數(shù)彼此相等,則為 true,否則為 false
public static boolean deepEquals(Object a, Object b)
如果參數(shù)彼此高度相等,則返回 true,否則返回 false。 兩個(gè)空值非常相等。 如果兩個(gè)參數(shù)都是數(shù)組,則使用 Arrays#deepEquals(Object[], Object[]) 中的算法來(lái)確定相等性。 否則,相等性通過(guò)使用第一個(gè)參數(shù)的 Object#equals 方法來(lái)確定。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
a | 一個(gè)對(duì)象 |
b | 一個(gè)要與 a 進(jìn)行比較的對(duì)象以實(shí)現(xiàn)深度相等 |
返回:
如果參數(shù)彼此高度相等,則為 true,否則為 false
public static int hashCode(Object o)
返回非空參數(shù)的哈希碼,空參數(shù)返回 0。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
o | 一個(gè)對(duì)象 |
返回:
非空參數(shù)的哈希碼和空參數(shù)的 0
public static int hash(Object... values)
為一系列輸入值生成哈希碼。 哈希碼的生成就像將所有輸入值放入一個(gè)數(shù)組中一樣,并且該數(shù)組通過(guò)調(diào)用 [Arrays#hashCode(Object]) 進(jìn)行了哈希處理。
此方法對(duì)于在包含多個(gè)字段的對(duì)象上實(shí)現(xiàn) Object#hashCode() 很有用。 例如,如果一個(gè)對(duì)象具有三個(gè)字段 x、y 和 z,則可以這樣寫:
@Override public int hashCode() {
return Objects.hash(x, y, z);
}
警告:當(dāng)提供單個(gè)對(duì)象引用時(shí),返回值不等于該對(duì)象引用的哈希碼。 這個(gè)值可以通過(guò)調(diào)用 hashCode(java.lang.Object) 來(lái)計(jì)算。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
values | 要散列的值 |
返回:
輸入值序列的哈希值
public static String toString(Object o)
返回為非 null 參數(shù)調(diào)用 toString 和為 null 參數(shù)調(diào)用“null”的結(jié)果。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
o | 一個(gè)對(duì)象 |
返回:
為非 null 參數(shù)調(diào)用 toString 和為 null 參數(shù)調(diào)用“null”的結(jié)果
public static String toString(Object o, String nullDefault)
如果第一個(gè)參數(shù)不為 null,則返回對(duì)第一個(gè)參數(shù)調(diào)用 toString 的結(jié)果,否則返回第二個(gè)參數(shù)。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
o | 一個(gè)對(duì)象 |
nullDefault | 如果第一個(gè)參數(shù)為空,則返回字符串 |
返回:
如果第一個(gè)參數(shù)不為空,則對(duì)第一個(gè)參數(shù)調(diào)用 toString 的結(jié)果,否則為第二個(gè)參數(shù)。
public static <T> int compare(T a, T b, Comparator<? super T> c)
如果參數(shù)相同則返回 0,否則返回 c.compare(a, b)。 因此,如果兩個(gè)參數(shù)都為空,則返回 0。
請(qǐng)注意,如果其中一個(gè)參數(shù)為空,則可能會(huì)或可能不會(huì)拋出 NullPointerException,具體取決于比較器為空值選擇的排序策略(如果有)。
類型參數(shù):
類型參數(shù)名稱 | 類型參數(shù)描述 |
---|---|
T | 被比較的對(duì)象的類型 |
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
a | 一個(gè)對(duì)象 |
b | 一個(gè)要與之比較的對(duì)象 |
c | Comparator 比較前兩個(gè)參數(shù) |
返回:
如果參數(shù)相同,則為 0,否則為 c.compare(a, b)。
public static <T> T requireNonNull(T obj)
檢查指定的對(duì)象引用不為空。 此方法主要用于在方法和構(gòu)造函數(shù)中進(jìn)行參數(shù)驗(yàn)證,如下所示:
public Foo(Bar bar) {
this.bar = Objects.requireNonNull(bar);
}
類型參數(shù):
類型參數(shù)名稱 | 類型參數(shù)描述 |
---|---|
T | 參考的類型 |
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
obj | 檢查無(wú)效性的對(duì)象引用 |
返回:
如果不為空,則為 obj
Throws:
Throw名稱 | Throw描述 |
---|---|
NullPointerException | 如果 obj 為空 |
public static <T> T requireNonNull(T obj, String message)
檢查指定的對(duì)象引用是否不為空,如果是則拋出自定義的 NullPointerException。 該方法主要用于在具有多個(gè)參數(shù)的方法和構(gòu)造函數(shù)中進(jìn)行參數(shù)驗(yàn)證,如下所示:
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");
}
類型參數(shù):
類型參數(shù)名稱 | 類型參數(shù)描述 |
---|---|
T | 參考的類型 |
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
obj | 檢查無(wú)效性的對(duì)象引用 |
message | 拋出 NullPointerException 時(shí)使用的詳細(xì)消息 |
返回:
如果不為空,則為 obj
Throws:
Throw名稱 | Throw描述 |
---|---|
NullPointerException | 如果 obj 為空 |
public static boolean isNull(Object obj)
如果提供的引用為 null,則返回 true,否則返回 false。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
obj | 要針對(duì) null 進(jìn)行檢查的引用 |
返回:
如果提供的引用為 null,則為 true,否則為 false
public static boolean nonNull(Object obj)
如果提供的引用為非 null,則返回 true,否則返回 false。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
obj | 要針對(duì) null 進(jìn)行檢查的引用 |
返回:
如果提供的引用不為空,則為 true,否則為 false
public static <T> T requireNonNull(T obj, SupplierString messageSupplier)
檢查指定的對(duì)象引用是否不為空,如果是則拋出自定義的 NullPointerException。
與方法 requireNonNull(java.lang.Object,java.lang.String) 不同,此方法允許將消息的創(chuàng)建推遲到進(jìn)行空值檢查之后。 雖然這可能會(huì)在非空情況下帶來(lái)性能優(yōu)勢(shì),但在決定調(diào)用此方法時(shí),應(yīng)注意創(chuàng)建消息提供者的成本低于直接創(chuàng)建字符串消息的成本。
類型參數(shù):
類型參數(shù)名稱 | 類型參數(shù)描述 |
---|---|
T | the type of the reference |
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
obj | 檢查無(wú)效性的對(duì)象引用 |
messageSupplier | 拋出 NullPointerException 時(shí)使用的詳細(xì)消息的提供者 |
返回:
如果不為空,則為 obj
Throws:
Throw名稱 | Throw描述 |
---|---|
NullPointerException | 如果 obj 為空 |
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: