Class Optional
java.lang.Object
java.util.Optional
从1.8版本开始:
public final class Optional
extends Object可能包含或不包含非空值的容器对象。 如果一个值存在, isPresent()将返回true和get()将返回值。
提供依赖于存在或不存在包含值的其他方法,例如orElse() (如果值不存在则返回默认值)和ifPresent() (如果值存在则执行代码块)。
这是一个value-based课; 使用身份敏感的操作(包括引用相等(的==上的实例),标识哈希码,或同步) Optional可具有不可预测的结果,应当避免。
常用方法见api
示例:
package com.itheima.demo;
/**
* @date 2021年04月28日 16:31
*/
public class Person {
private Student student;
public Person(Student student) {
this.student = student;
}
public Person() {
}
public Student getstudent() {
return student;
}
@Override
public String toString() {
return "Person{" +
"student=" + student +
'}';
}
public void setstudent(Student student) {
this.student = student;
}
}
package com.itheima.demo;
/**
* @date 2021年04月28日 16:32
*/
public class Student {
private String name;
public Student() {
}
public Student(String name) {
this.name = name;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
'}';
}
public void setName(String name) {
this.name = name;
}
}
package com.itheima.demo;
import org.junit.Test;
import java.util.Optional;
/**
* @date 2021年04月28日 16:33
*/
public class OptionalTest {
@Test
public void test1() {
Person person =new Person();
String name = getName(person);
System.out.println(name);
}
//获取学生的姓名
public static String getName(Person person){
//判断是否为空判断
//判断是否为空
Optional<Person> person1 = Optional.ofNullable(person);
//如果为空在創建一個新對象,不为空則不創建
Person person2 = person1.orElse(new Person(new Student("小明")));
System.out.println(person2);
//獲取學生對象获取学生对象
Student student = person2.getstudent();
//判斷學生對象是否为空
Optional<Student> student1 = Optional.ofNullable(student);
//如果为空,則創建小紅對象,不誒空則繼續如果为空
Student red = student1.orElse(new Student("小紅"));
//直接返回學生的姓名
return red.getName();
}
}