Optional 优化的处理null

1、判断是否有值 optional.isPresent()

if (optional.isPresent()){}
public class OptionalDemo {
public static void main(String[] args) {
List<String> list = Lists.newArrayList("asd","a","wer","zxc","aaa","123456","abcde");

Optional<String> optional = list.stream()
.filter(s -> s.length() > 8)
.findFirst();
if (optional.isPresent()){
System.out.println(optional.get());
}

}
}

2、没有值时,给一个默认值 optional.orElse("youslef")

import com.google.common.collect.Lists;

import java.util.List;
import java.util.Optional;

public class OptionalDemo {
public static void main(String[] args) {
List<String> list = Lists.newArrayList("asd","a","wer","zxc","aaa","123456","abcde");

Optional<String> optional = list.stream()
.filter(s -> s.length() > 2)
.findFirst();

String c = optional.orElse("youslef");
System.out.println(c);


}
}

String c = optional.orElse("youslef")  ,当optional为null时,给一个默认值

3、没有值时,给一个默认值 optional.orElseGet()

        List<String> list = Lists.newArrayList("asd","a","wer","zxc","aaa","123456","abcde");

Optional<String> optional = list.stream()
.filter(s -> s.length() > 8)
.findFirst();

String s = optional.orElseGet(()-> RandomStringUtils.randomAlphabetic(8));
System.out.println(s);

打印结果:

ZOuYpyIH

optional.orElseGet() ,当optional没有值时,取orElseGet()里面的值。

orElseGet()里面传的是供给型。

4、Optional的使用

public static Optional<Integer> getStringLength(String str){
if (str == null){
return Optional.empty()
}
int length = str.length();
return Optional.of(length);
}

静态方法,返回字符串的长度。返回类型是Optional<Integer>

当str为null时,返回Optional.empty()