Optional
原创
©著作权归作者所有:来自51CTO博客作者wx63186321c235c的原创作品,请联系作者获取转载授权,否则将追究法律责任
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);
打印结果:
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()