直接贴代码:
package com.c8a.optional;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.testng.annotations.Test;
import java.util.Optional;
/**
* @Author C8A
* @Date 2021-11-22 19:45
* @Email 1912327276@qq.com
*/
public class OptionalAPI {
@Data
@AllArgsConstructor
@NoArgsConstructor
static class Person {
private Boy boy;
private Girl girl;
public Person(Girl girl) {
this.girl = girl;
}
}
@Data
@AllArgsConstructor
@NoArgsConstructor
static class Boy {
private String name;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
static class Girl {
private String name;
}
/*
Optional.of(T t):创建一个Optional 实例,t必须非空;
Optional.empty():创建一个空的 Optional实例
Optional.ofNullable(Tt):t可以为null
*/
@Test
public void Test1() {
Girl girl = new Girl();
// girl = null;
// Optional<Girl> girl1 = Optional.of(girl);
Optional<Object> empty = Optional.empty();
System.out.println(empty);
Optional<Girl> girl2 = Optional.ofNullable(girl);
System.out.println(girl2);
}
//原来的获取名字
public String getGirlName(Girl girl) {
if (girl != null) {
return girl.getName();
}
return null;
}
//优化后的获取名字
public String getGirlName1(Person person) {
Optional<Person> optionalPerson = Optional.ofNullable(person);
Person person2 = optionalPerson.orElse(new Person(new Girl("芭比Q")));
Girl girl = person2.girl;
Optional<Girl> girl1 = Optional.ofNullable(girl);
Girl girl2 = girl1.orElse(new Girl("小鸟酱"));
return girl2.getName();
}
@Test
public void Test2() {
Girl girl1 = new Girl();
// girl1 = null;
Optional<Girl> girl2 = Optional.ofNullable(girl1);
Girl girl3 = girl2.orElse(new Girl("十七岁"));
System.out.println(girl3);
}
@Test
public void Test3() {
Person person = new Person();
// girl1 = null;
String girlName1 = getGirlName1(person);
System.out.println(girlName1);
}
}