Guava学习笔记(1) --- Optional类的基本使用

/**
 * Optional测试类
 */
public class OptionalTest {

	@Test
	public void test() {
		
		//创建空的Optional对象
		Optional.empty();
				
		//使用非null值创建Optional对象,不能传入null,负责会报错
		//Optional.of(null);
		Optional.of("123");
				
		//使用任意值创建Optional对象
		Optional<Object> nullable = Optional.ofNullable(null);
				
		//判断是否引用缺失的方法(建议不直接使用),这种方法和普通的判断是否为空方法一样的效果
		boolean present = nullable.isPresent();
		//输出结果为false,表示引用不存在,即值为null
		//System.out.println(present);
		
		/**
		 * 判断是否引用缺失,如果不为空(optional引用存在时执行)则执行内部函数
		 * 类似的方法: map filter flatMap
		 */
		nullable.ifPresent(System.out::println);
		
		/**
		 * 当引用缺失时执行并可以自定义返回值
		 */
		String orElse = (String)nullable.orElse("引用缺失");
		System.out.println( "orElse:" + orElse);
		
		/**
		 * 当引用缺失时可以自定义内部函数
		 */
		String orElseGet = (String)nullable.orElseGet(
			() -> 
			{
				return "引用缺失";
			});
		System.out.println("orElseGet:" + orElseGet);
		
		/**
		 * 当引用缺失时抛出异常
		 */
		/*nullable.orElseThrow(
				() ->
				{
					throw new RuntimeException("引用缺失");
				});
		*/
	}
	
	
	/**
	 * 使用流处理方法抛出空指针异常的处理方法
	 */
	private static void stream(List<String> list) {
		list.stream().forEach(System.out::println);
	}
	
	/**
	 * 改进版
	 * @param list
	 */
	private static void streamImprove(List<String> list) {
		Optional.ofNullable(list)
		.map(List::stream)
		//如果为空则创建空的流
		.orElseGet(Stream::empty)
		.forEach(System.out::println);
	}
	
	public static void main(String[] args) {
		
		//如果传入是null则会报空指针异常
		//stream(null);
		
		streamImprove(null);
		
	}
		
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值