Java Optional 类的使用
程序员文章站
2022-03-04 10:51:50
...
使用 Optional 类可以通过检查空值来防止代码污染,也可以根据条件过滤非空值。
import java.util.NoSuchElementException;
import java.util.Optional;
public class OptionalDemo {
public static void main(String[] args) {
Optional<String> name = Optional.of("Sanaulla");
Optional empty = Optional.ofNullable(null);
if (name.isPresent()) {
System.out.println(name.get());
}
try {
System.out.println(empty.get());
} catch (NoSuchElementException ex) {
System.out.println(ex.getMessage());
}
// 如果有值,则调用参数 Consumer
name.ifPresent((value) -> {
System.out.println("The length of the value is: " + value.length());
});
// 有值则返回,否则返回默认值或生成的默认值
System.out.println(empty.orElse("There is no value present!"));
System.out.println(name.orElse("There is some value!"));
System.out.println(empty.orElseGet(() -> "Default Value"));
System.out.println(name.orElseGet(() -> "Default Value"));
System.out.println("----------------------");
// Map:如果有值则执行方法
Optional<String> upperName = name.map((value) -> value.toUpperCase());
System.out.println(upperName.orElse("No value found"));
upperName = name.flatMap((value) -> Optional.of(value.toUpperCase()));
System.out.println(upperName.orElse("No value found"));
// Filter:对 Optional 实例的值进行过滤
Optional<String> longName = name.filter((value) -> value.length() > 6);
System.out.println(longName.orElse("The name is less than 6 characters"));
Optional<String> anotherName = Optional.of("Sana");
Optional<String> shortName = anotherName.filter((value) -> value.length() > 6);
System.out.println(shortName.orElse("The name is less than 6 characters"));
}
}
上一篇: Java 8 | Optional
下一篇: Optional类的介绍与使用