📅  最后修改于: 2023-12-03 15:01:35.776000             🧑  作者: Mango
Optional
类是Java 8中引入的一个有用的工具类,用于解决编码中可能出现的空指针异常问题。Optional
类可以表示一个值的容器,这个值可以是空的或者非空的。
Optional
类是一个泛型类,可以包装任意类型的对象。Optional
类的静态方法来创建一个空的Optional
对象,或者将一个非空值包装在Optional
对象中。isPresent
方法可以判断Optional
对象是否包含了一个值。get
方法可以获取Optional
对象中的值,但如果值不存在则会抛出NoSuchElementException
异常。orElse
方法可以设置一个默认值,如果Optional
对象中的值不存在,则返回该默认值。orElseGet
方法可以设置一个供给型函数,如果Optional
对象中的值不存在,则调用该函数返回一个默认值。orElseThrow
方法可以抛出一个自定义的异常,如果Optional
对象中的值不存在。Optional
类还提供了一系列其他方法,用于对包装的值进行操作,如map
、flatMap
、filter
等。import java.util.Optional;
public class OptionalExample {
public static void main(String[] args) {
// 创建一个空的Optional对象
Optional<String> emptyOptional = Optional.empty();
// 创建一个包含非空值的Optional对象
Optional<String> valueOptional = Optional.of("Hello");
// 判断Optional对象是否包含值
System.out.println(emptyOptional.isPresent()); // false
System.out.println(valueOptional.isPresent()); // true
// 获取Optional对象中的值
System.out.println(valueOptional.get()); // "Hello"
// 设置一个默认值
String defaultValue = emptyOptional.orElse("Default Value");
System.out.println(defaultValue); // "Default Value"
// 设置一个供给型函数
String computedValue = emptyOptional.orElseGet(() -> "Computed Value");
System.out.println(computedValue); // "Computed Value"
// 抛出自定义异常
try {
emptyOptional.orElseThrow(() -> new RuntimeException("Value not present"));
} catch (RuntimeException e) {
System.out.println(e.getMessage()); // "Value not present"
}
// 对包装的值进行操作
Optional<String> uppercaseOptional = valueOptional.map(String::toUpperCase);
System.out.println(uppercaseOptional.get()); // "HELLO"
Optional<Integer> lengthOptional = valueOptional.map(String::length);
System.out.println(lengthOptional.get()); // 5
}
}
以上代码示例了Optional
类的基本用法,包括创建空的和非空的Optional
对象、判断是否包含值、获取值、设置默认值、使用供给型函数、抛出自定义异常以及对包装的值进行操作等。
Optional
类是一个强大的工具类,可以有效地避免空指针异常的问题。在编写Java代码时,可以考虑使用Optional
类来处理可能为空的值,提高代码的健壮性和可读性。