ObjectUtils類介紹

方法:

allNotNull(對象...值) 檢查所有對像是否不為空
allNull(對象...值) 檢查所有對像是否為空
anyNotNull(對象...值) 檢查至少一個對像不為空
anyNull(對象...值) 檢查至少一個對象為空
克隆(T對象) 克隆一個對象
cloneIfPossible(T obj) 克隆對像或返回原始對象
比較(T c1,T c2) 比較對象
defaultIfNull(T object, T defaultValue) 如果對象為空,則返回默認對象
等於(對像對象 1,對像對象 2) 比較兩個對象
不相等(對像對象 1,對像對象 2) 檢查兩個對像是否不相等
firstNonNull(T...值) 返回第一個不為空的對象
getFirstNonNull(供應商 ...供應商) 返回第一個不為空的對象
getIfNull(T 對象,供應商 默認供應商) 如果不為 null 則返回給定對象,否則返回傳遞的 Supplier 的 Supplier.get() 值
哈希碼(對象) 計算對象的哈希碼
hashCodeMulti(對象...對象) 計算一組對象的 hashCode
isEmpty(對像對象) 檢查對像是否為空或 null
isNotEmpty(對像對象) 檢查對像是否不為空或 null
requireNonEmpty(T obj) 檢查對像是否不為空,否則拋出異常
requireNonEmpty(T obj,字符串消息) 檢查對像是否不為空,否則拋出異常
identityToString(對像對象) 返回對象的字符串
toString(對像對象) 返回對象的字符串
toString(Object obj, String nullStr) 返回對象的字符串
toString(對像對象,供應商 供應商) 返回對象的字符串

讓我們看看每組中的一種方法。我希望您經常使用它們,因為它們非常方便並且可以讓您避免不必要的代碼。

ObjectUtils.compare()

該方法以與比較器相同的方式比較對象:大於、小於或等於。它可用於對對象進行排序。

方法簽名如下所示:

public static <T extends Comparable<? super T>> int compare(final T c1, final T c2);
public static <T extends Comparable<? super T>> int compare(final T c1, final T c2, final boolean nullGreater);

如果第三個參數 ( nullGreater ) 為true,則null將始終被視為大於非null。如果 c1> c2,該方法返回正數,如果 c1<c2,則返回負數,如果 c1 == c2,則返回 0。

例子:

String firstValue = "codeGym";
String secondValue = "codeGym";
System.out.print(ObjectUtils.compare(firstValue, secondValue));
System.out.println();

firstValue = "codeGym";
secondValue = null;
System.out.print(ObjectUtils.compare(firstValue, secondValue));
System.out.println();

firstValue = "";
secondValue = "codeGym";
System.out.print(ObjectUtils.compare(firstValue, secondValue));
System.out.println();

程序會顯示結果:

0
1
-8

ObjectUtils.isNotEmpty()

isNotEmpty()方法檢查傳遞給它的對象既不是空的也不是null

方法簽名:

public static boolean isNotEmpty(final Object object)

例子:

List<String> values = new ArrayList<>();
System.out.println(ObjectUtils.isNotEmpty(values));

values.add("codeGym");
System.out.println(ObjectUtils.isNotEmpty(values));

values = null;
System.out.println(ObjectUtils.isNotEmpty(values));

結果將顯示在屏幕上:

false
true
false

java.util.Objects

Java 開發人員非常喜歡ObjectUtils的想法,因此在 JDK 7 中他們添加了自己的:

isNull(Objectobj) 檢查對像是否為空
非空(對像對象) 檢查對像是否不為空
toString(對象) 將對象轉換為字符串
toString(對象,字符串 nullDefault) 將對象轉換為字符串
布爾等於(對象 a,對象 b) 比較對象
布爾 deepEquals(對象 a,對象 b) 比較對象
T requireNonNull(T obj) 檢查傳遞的參數是否不為空
T requireNonNull(T obj,String message) 檢查傳遞的參數是否不為空
int hashCode(Object o) 計算對象的哈希碼
int hash(對象...值) 計算一組對象的 hashCode
int 比較(T a,T b,比較器 c) 比較對象

由於java.util.Objects類是 JDK 的一部分,因此建議您在代碼中使用它。

重要的是要注意,當您閱讀別人的代碼時,您很可能會遇到ObjectUtils 的選項,這通常發生在開源中。在這裡您可以看到它們有何不同。