以下所有内容是我问Cursor得来的:
Optional 是一个泛型类,它可以包装一个可能为 null 的值。它的目的是为了避免空指针异常。如果一个变量的类型是 Optional>,那么它要么包含类型为 T 的值,要么为空。
要使用 Optional 类,您可以首先创建一个 Optional 对象,然后使用 of() 或 ofNullable() 方法将一个值包装在其中。例如,如果您要包装一个可能为 null 的字符串,可以这样做:
Optional<String> optionalString = Optional.ofNullable(someString);
然后,您可以使用 isPresent() 方法检查包装的值是否存在,如果存在则使用 get() 方法获取该值。例如,如果您要获取包装的字符串,可以这样做:
if (optionalString.isPresent()) {
String myString = optionalString.get();
// do something with myString
}
如果包装的值不存在,isPresent() 方法将返回 false,get() 方法将抛出 NoSuchElementException 异常。为了避免这种情况,您可以使用 orElse() 或 orElseGet() 方法提供一个默认值。例如,如果您要获取包装的字符串,但如果它不存在则使用默认值 "default",可以这样做:
String myString = optionalString.orElse("default");
或者,如果您要使用一个函数来生成默认值,可以使用 orElseGet() 方法。例如,如果您要获取包装的字符串,但如果它不存在则使用一个函数来生成默认值,可以这样做:
String myString = optionalString.orElseGet(() -> generateDefaultString());
这里的 generateDefaultString() 是一个函数,它将在包装的值不存在时被调用,以生成默认值。
在代码中使用 Optional 类可以提高代码的可读性和健壮性,因为它可以明确地表示一个值可能为空,并且可以避免空指针异常的发生。