> 文章列表 > Java Optional 类的使用

Java Optional 类的使用

Java Optional 类的使用

Java中的Optional类是一个容器对象,它可以包含某个类型的对象或者仅仅是null。使用Optional类可以避免NullPointerException异常。

下面是使用Optional类的一些常见方法

1、创建Optional对象

可以通过调用Optional类的of()或ofNullable()方法来创建Optional对象。其中,of()方法只能用于非空对象,而ofNullable()方法既可以用于非空对象,也可以用于空对象。

示例:

// 创建非空Optional对象
Optional<String> optional1 = Optional.of("Hello World");// 创建空的Optional对象
Optional<String> optional2 = Optional.ofNullable(null);

2、获取Optional对象中的值

可以通过调用Optional对象的get()方法获取对象的值。如果Optional对象中没有值,该方法会抛出NoSuchElementException异常。

示例:

Optional<String> optional = Optional.of("Hello World");
String value = optional.get();
System.out.println(value); // 输出:Hello World

3、判断Optional对象中是否包含值

可以通过调用Optional对象的isPresent()方法来判断Optional对象中是否包含值。

示例:

Optional<String> optional1 = Optional.of("Hello World");
if (optional1.isPresent()) {String value = optional1.get();System.out.println(value); // 输出:Hello World
}Optional<String> optional2 = Optional.ofNullable(null);
if (optional2.isPresent()) {String value = optional2.get();System.out.println(value);
} else {System.out.println("Optional is empty.");
}

4、如果Optional对象中没有值,执行一个备选操作

可以通过调用Optional对象的orElse()或orElseGet()方法来执行备选操作。其中,orElse()方法会在Optional对象为空时返回指定的默认值,而orElseGet()方法会在Optional对象为空时执行一个Supplier函数接口,并返回函数执行的结果。

示例:

Optional<String> optional1 = Optional.ofNullable(null);
String value1 = optional1.orElse("Default Value");
System.out.println(value1); // 输出:Default ValueOptional<String> optional2 = Optional.ofNullable(null);
String value2 = optional2.orElseGet(() -> {return "Default Value from Supplier";
});
System.out.println(value2); // 输出:Default Value from Supplier

5、如果Optional对象中没有值,抛出一个异常

可以通过调用Optional对象的orElseThrow()方法,在Optional对象为空时抛出一个指定的异常。

示例:

Optional<String> optional = Optional.ofNullable(null);
String value = optional.orElseThrow(() -> {return new RuntimeException("Optional value is null.");
});

6、对Optional对象中的值进行处理

可以通过调用Optional对象的ifPresent()方法,在Optional对象中包含值时执行一个Consumer函数接口。或者可以通过调用Optional对象的map()或flatMap()方法,对Optional对象中的值进行处理。

示例:

Optional<String> optional1 = Optional.of("Hello World");
optional1.ifPresent((value) -> {System.out.println(value); // 输出:Hello World
});Optional<String> optional2 = Optional.of("Hello World");
Optional<Integer> result = optional2.map((value) -> {return value.length();
});
System.out.println(result.get()); // 输出:11