鴻蒙OS Objects

2022-07-29 13:59 更新

Objects

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ì)象的空值安全或空值容忍方法。

方法總結(jié)

修飾符和類型 方法 描述
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

方法詳情

equals

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

deepEquals

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

hashCode

public static int hashCode(Object o)

返回非空參數(shù)的哈希碼,空參數(shù)返回 0。

參數(shù):

參數(shù)名稱 參數(shù)描述
o 一個(gè)對(duì)象

返回:

非空參數(shù)的哈希碼和空參數(shù)的 0

hash

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 要散列的值

返回:

輸入值序列的哈希值

toString

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é)果

toString

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ù)。

compare

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)。

requireNonNull

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 為空

requireNonNull

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 為空

isNull

public static boolean isNull(Object obj)

如果提供的引用為 null,則返回 true,否則返回 false。

參數(shù):

參數(shù)名稱 參數(shù)描述
obj 要針對(duì) null 進(jìn)行檢查的引用

返回:

如果提供的引用為 null,則為 true,否則為 false

nonNull

public static boolean nonNull(Object obj)

如果提供的引用為非 null,則返回 true,否則返回 false。

參數(shù):

參數(shù)名稱 參數(shù)描述
obj 要針對(duì) null 進(jìn)行檢查的引用

返回:

如果提供的引用不為空,則為 true,否則為 false

requireNonNull

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 為空
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)