欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

教你练会java8新特性-Optional类,玩转空指针

程序员文章站 2022-06-07 15:34:33
...

1:利用Optional类判断是否为空

ic class Test {
	public static void main(String[] args) {
		String a = "test";
		String opt = Optional.ofNullable(a).map(String :: toUpperCase).orElse("没有值");
		System.out.println(opt);
	}
}

说明:

Optional.ofNullable(a)-----------将参数传入,创建Optional对象

map方法进行逻辑处理,orelse方法进行空值返回

map方法可以传入类,类的方法,也可以写成lambda表达式的方式

import java.util.Optional;

public class Test {
	public static void main(String[] args) {
		String a = "test";
//		String opt = Optional.ofNullable(a).map(String :: toUpperCase).orElse("没有值");
		String opt = Optional.ofNullable(a).map(t -> t.toUpperCase()).orElse("没有值");
		System.out.println(opt);
	}
}

2:利用orElseGet调用方法取的返回值,说明见注释

import java.util.Optional;

public class Test {
	public static void main(String[] args) {
		String a = null;
		String opt = Optional.ofNullable(a)//创建一个opt对象
				.map(String :: toUpperCase)//如果不为空的话,则变成大写
				.orElseGet(() -> get("BC"));//为空的话,执行新的方法逻辑
		System.out.println(opt);
	}
	public static String get(String args) {
		return Optional.ofNullable(args)
				.filter(a -> a.equals("ABC"))//过滤自己的逻辑判断
				.map(String :: toLowerCase).orElse("end");
	}
}

接下来有个注意的点,感兴趣的可以自行测试一下:

	//注意:map和flatMap的用法,
	//多次map后,你得到就是多次多层嵌套在Optional里面的值
	/* String s = Optional.ofNullable(person)
             .flatMap(p -> Optional.ofNullable(p.getCar()))
             .map(i -> i.getName())
             .orElse("");*/

 

相关标签: java