背景
Optional是一个容器,用来管理一个对象。主要是用来解决null和NullPointerException问题。
Java7 -> Java8 Optional是如何简化你的代码
假设有一个Student类
@Data
public class Student {
private String name;
private Integer age;
public Student() {
}
public Student(String name, Integer age) {
this.name = name;
this.age = age;
}
}
举例一
//java7
private String getJava7UpperCaseStudentName(Student student) {
if (student != null) {
String name = student.getName();
if (name != null) {
return name.toUpperCase();
}
}
return null;
}
//java8
private String getJava8UpperCaseStudentName(Student student) {
return Optional.ofNullable(student).map(Student::getName).map(String::toUpperCase).orElse(null);
}
举例二
@Test
public void testOptionalOrElse() {
Student origin = null;
Student defaultStudent = new Student("default", -1);
//java7
Student java7Student = origin != null ? origin : defaultStudent;
//java8
Student java8Student = Optional.ofNullable(origin).orElse(defaultStudent);
System.out.println("java7Student : " + java7Student)

本文介绍了Java8的Optional类,作为解决null和NullPointerException问题的利器。通过对比Java7和Java8,展示了Optional如何简化代码。文章详细讲解了of(), ofNullable(), empty()的用法,并通过测试说明isPresent()的功能。同时,探讨了map()和flatMap()的区别,强调flatMap要求返回的Optional值不能为null,否则会抛出异常。"
117157806,10542974,C语言:浮点BCD码转换成格式化浮点数,"['C语言', '数据转换']
最低0.47元/天 解锁文章
563

被折叠的 条评论
为什么被折叠?



