Java 8新特性:Optional的使用及判空案例
在Java 8中,引入了一个重要的类
Optional
,它是为了解决空指针异常(NullPointerException
)而设计的。Optional可以作为一个容器,可以包含一个非空的值或者为空
。
Optional的基本使用
创建Optional对象
可以使用Optional.of()
方法创建一个包含非空值的Optional对象,例如:
String name = "John Doe";
Optional<String> optionalName = Optional.of(name);
如果name为null
,则会抛出NullPointerException
。
如果你不确定
值是否为null,可以使用Optional.ofNullable()
方法,它可以接受一个可能为null的值,例如:
String name = null;
Optional<String> optionalName = Optional.ofNullable(name);
判断Optional是否包含值
可以使用
isPresent()
方法来判断Optional是否包含值,例如:
if (optionalName.isPresent()) {
System.out.println("Name is present: " + optionalName.get());
} else {
System.out.println("Name is absent.");
}
获取Optional中的值
可以使用
get()
方法来获取Optional中的值,但是在调用之前最好先使用isPresent()进行判断,例如:
String name1 = "liming";
Optional<String> optionalName = Optional.ofNullable(name1);
if (optionalName.isPresent()) {
String name = optionalName.get();
System.out.println("Name: " + name);
} else {
System.out.println("Name is absent.");
}
使用默认值(建议使用)
可以使用
orElse()
方法指定一个默认值,当Optional为空时返回该默认值,例如:
String name1 = null;
String defaultName = "Unknown";
Optional<String> optionalName = Optional.ofNullable(name1);
String name = optionalName.orElse(defaultName);
System.out.println("Name: " + name);
Optional的判空案例
避免空指针异常
在早期的Java版本中,经常会因为未对变量进行判空而导致空指针异常。使用Optional可以避免这种问题,例如:
Optional<String> optionalName = Optional.ofNullable(getName());
String name = optionalName.orElse("Unknown");
System.out.println("Name: " + name);
链式操作
Optional还支持链式操作,例如:
Optional<String> optionalName = Optional.ofNullable(getName());
optionalName.ifPresent(n -> System.out.println("Name: " + n));
总结
Optional是Java 8引入的一个重要特性,它可以避免空指针异常,并提供了简洁易读的代码风格。通过本文的介绍,你应该已经了解了Optional的基本使用方法以及如何利用它进行判空。建议Optional用在
方法返回值上
。参考链接:Java 8 Optional Documentation