java java.util.objects

java java.util.objects

java java.util.objects

引言

Java是一种面向对象的编程语言,它提供了许多内置类和接口来帮助开发人员更方便地处理对象。其中,java.util.Objects类是一个常用的工具类,它提供了一些静态方法来处理对象。本文将详细介绍java.util.Objects类,并介绍其常用方法以及实际应用场景。

一、java.util.Objects类概述

在Java 7中引入的java.util.Objects类是一个工具类,位于java.util包内,旨在提供一些有用的方法来处理对象。该类包含了一组静态方法,用于比较、处理和操作对象。下面是java.util.Objects类的UML类图:

+------------------------------------------------------------+
|                         Objects                            |
+------------------------------------------------------------+
| +compare(a: T, b: T): int                                  |
| +deepEquals(a: Object, b: Object): boolean                 |
| +equals(a: Object, b: Object): boolean                     |
| +hashCode(o: Object): int                                  |
| +isNull(obj: Object): boolean                              |
| +nonNull(obj: Object): boolean                             |
| +requireNonNull(obj: T): T                                 |
| +requireNonNull(obj: T, message: String): T                |
| +requireNonNull(obj: T, supplier: Supplier<T>): T          |
+------------------------------------------------------------+
Java

从上面的UML类图可以看出,java.util.Objects类提供了以下常用方法:

  • compare(a, b):比较两个对象的大小,返回一个int值。
  • deepEquals(a, b):深度比较两个对象的值是否相等。
  • equals(a, b):比较两个对象是否相等。
  • hashCode(o):返回指定对象的哈希码。
  • isNull(obj):判断指定对象是否为null
  • nonNull(obj):判断指定对象是否不为null
  • requireNonNull(obj):要求指定对象不为null,否则会抛出NullPointerException异常。如果对象为null,则会使用默认的错误信息。
  • requireNonNull(obj, message):要求指定对象不为null,否则会抛出NullPointerException异常。如果对象为null,则会使用指定的错误信息。
  • requireNonNull(obj, supplier):要求指定对象不为null,否则会抛出NullPointerException异常。如果对象为null,则会使用由Supplier提供的错误信息。

二、java.util.Objects常用方法详解

1. compare(a, b)

该方法用于比较两个对象的大小,返回一个int值。如果a小于b,则返回负数;如果a大于b,则返回正数;如果a等于b,则返回0。

示例代码如下:

int result = Objects.compare("apple", "banana", (o1, o2) -> o1.length() - o2.length());
System.out.println(result);
Java

代码运行结果:

-2
Java

上述示例中,我们使用compare方法比较了字符串”apple”和”banana”的长度。由于”apple”的长度小于”banana”,所以返回结果为-2。

2. deepEquals(a, b)

该方法用于深度比较两个对象的值是否相等,返回一个布尔值。如果两个对象的值相等,则返回true;否则返回false

示例代码如下:

String[] arr1 = {"apple", "banana", "cherry"};
String[] arr2 = {"apple", "banana", "cherry"};

boolean result = Objects.deepEquals(arr1, arr2);
System.out.println(result);
Java

代码运行结果:

true
Java

上述示例中,我们使用deepEquals方法比较了两个字符串数组的值是否相等。由于两个数组的每个元素都相同,所以返回结果为true

3. equals(a, b)

该方法用于比较两个对象是否相等,返回一个布尔值。如果两个对象相等,则返回true;否则返回false

示例代码如下:

String str1 = "hello";
String str2 = "hello";

boolean result = Objects.equals(str1, str2);
System.out.println(result);
Java

代码运行结果:

true
Java

上述示例中,我们使用equals方法比较了两个字符串是否相等。由于两个字符串的值相同,所以返回结果为true

4. hashCode(o)

该方法用于返回指定对象的哈希码,返回一个int值。

示例代码如下:

String str = "hello";

int hashCode = Objects.hashCode(str);
System.out.println(hashCode);
Java

代码运行结果:

99162322
Java

上述示例中,我们使用hashCode方法获取了字符串”hello”的哈希码。

5. isNull(obj)nonNull(obj)

isNull(obj)方法用于判断指定对象是否为null,返回一个布尔值。如果对象为null,则返回true;否则返回falsenonNull(obj)方法则与isNull(obj)相反。

示例代码如下:

String str = null;

boolean isNull = Objects.isNull(str);
boolean nonNull = Objects.nonNull(str);

System.out.println(isNull);
System.out.println(nonNull);
Java

代码运行结果:

true
false
Java

上述示例中,我们使用isNullnonNull方法判断了一个字符串是否为null

6. requireNonNull(obj)

该方法用于要求指定对象不为null,否则会抛出NullPointerException异常。如果对象为null,则会使用默认的错误信息。

示例代码如下:

String str = null;

Objects.requireNonNull(str);
Java

代码运行结果:

Exception in thread "main" java.lang.NullPointerException
Java

上述示例中,我们使用requireNonNull方法要求一个字符串不为null。由于字符串strnull,所以抛出了NullPointerException异常。

7. requireNonNull(obj, message)requireNonNull(obj, supplier)

requireNonNull(obj, message)方法与requireNonNull(obj)方法类似,但是可以自定义错误信息。requireNonNull(obj, supplier)方法则与requireNonNull(obj, message)方法类似,但是可以使用Supplier提供错误信息。

示例代码如下:

String str = null;

Objects.requireNonNull(str, "The given string is null.");
Java

代码运行结果:

Exception in thread "main" java.lang.NullPointerException: The given string is null.
Java

上述示例中,我们使用requireNonNull方法要求一个字符串不为null,并自定义了错误信息。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册