CodeGym /Java 课程 /模块 3 /来自 Apache Commons 的 ObjectUtils 类

来自 Apache Commons 的 ObjectUtils 类

模块 3
第 20 级 , 课程 3
可用

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(对象o) 计算对象的哈希码
int hash(对象...值) 计算一组对象的 hashCode
int 比较(T a,T b,比较器 c) 比较对象

由于java.util.Objects类是 JDK 的一部分,因此建议您在代码中使用它。

重要的是要注意,当您阅读别人的代码时,您很可能会遇到ObjectUtils 的选项,这通常发生在开源中。在这里您可以看到它们有何不同。

评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION