Java Optional 实用实例

Optional

	
Optional.of("javastack").orElseThrow(); // javastack
 // 1

	

8.12.1. of() 为非null的值创建一个Optional。

of方法通过工厂方法创建Optional类。需要注意的是,创建对象时传入的参数不能为null。如果传入参数为null,则抛出NullPointerException 。

		
		Optional<String> name = Optional.of("netkiller");
		if (name.isPresent()) {
			// 在Optional实例内调用get()返回已存在的值
			System.out.println(name.get());// 输出 netkiller
		}		
		
			

传入参数为null,抛出NullPointerException.

		
Optional<String> someNull = Optional.of(null);		
		
			

8.12.2. ofNullable() 为指定的值创建一个Optional,如果指定的值为null,则返回一个空的Optional。

		
		Optional<String> name = Optional.ofNullable("netkiller");
		if (name.isPresent()) {
			// 在Optional实例内调用get()返回已存在的值
			System.out.println(name.get());// 输出 netkiller
		}

		Optional<String> empty = Optional.ofNullable(null);
		if (empty.isPresent()) {
			System.out.println(empty.get());
		}
		
			

8.12.3. isPresent 如果值存在返回true,否则返回false。ifEmpty() null 返回 true 否则返回 false

		
	//isPresent方法用来检查Optional实例中是否包含值
	if (name.isPresent()) {
		System.out.println(name.get());
	}
		
			

ifEmpty() 与 ifPresent() 刚好相反

8.12.4. ifPresent() 如果Optional实例有值执行 lambda 表达式

如果Optional实例有值,调用ifPresent()可以接受接口段或lambda表达式。类似下面的代码:

		
	Optional<String> name = Optional.ofNullable("netkiller");

	name.ifPresent((value) -> {
		System.out.println("hello " + value);
	});

	name.ifPresent((value) -> {
		System.out.println(value.length());
	});		
		
			

8.12.5. get() 返回值

如果Optional有值则将其返回,否则抛出NoSuchElementException。

		
		Optional<String> name = Optional.ofNullable("netkiller");
		System.out.println(name.get());
		
		Optional<String> empty = Optional.ofNullable(null);
		try {
			System.out.println(empty.get());
		} catch (NoSuchElementException e) {
			System.out.println(e.getMessage());
		}		
		
			

输出内容

		
ne
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

netkiller-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值