Jdk8新特性(四):新增Optional类

4. 新增Optional类

该类主要为解决空指针异常(NullPointerException)问题。

4.1. 创建Optional对象

 of()方法

null 值作为参数传递进去,仍会抛空指针异常。

 ofNullable()

如果对象可能是 null,则应该使⽤该方法。
import java.util.Optional;

public class OptionalTest {
	
	public static void main(String[] args) {
		Student student = new Student("张三", 28);
		student = null;
		Optional<Student> opl = Optional.of(student);//空指针异常
		Optional<Student> opnl = Optional.ofNullable(student);//不报异常
	}
	
}

注: 如果想不报空指针异常,建议使用ofNullable(),或自定义处理。

4.2. 获取Optional对象值

 get()方法

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

 isPresent()

判断Optional中是否有值,如果值存在,则返回true;否则返回false。
import java.util.Optional;

public class OptionalTest {
	
	public static void main(String[] args) {
		Student student = new Student("张三", 28);
		student = null;
		
		Optional<Student> opnl = Optional.ofNullable(student);//不报异常
		if(opnl.isPresent()) {//若存在值,则返回true
			Student stu2 = opnl.get();
			System.out.println(stu2.getAge());//28
		}
	}
	
}

4.3. 兜底方法

 orElse(T other)方法

如果Optional中有值,则返回值,否则返回other。

示例1:

import java.util.Optional;

public class OptionalTest {
	
	public static void main(String[] args) {
		Student student1 = null;
		Student student2 = new Student("李四", 28);
		
		Student stu = Optional.ofNullable(student1).orElse(student2);//orElse中一定要传递不能为null的值,确保兜底方法可以永远顺利执行,否则后续操作还会报错
		System.out.println(stu.getName());
	}
	
}

示例2(接触Lambda表达式):

import java.util.Optional;

public class OptionalTest {
	
	public static void main(String[] args) {
		Student student1 = null;
		Student student2 = new Student("李四", 28);
		
		Integer age1 = Optional.ofNullable(student1).map(obj->obj.getAge()).orElse(40);
		System.out.println(age1);//40
		Integer age2 = Optional.ofNullable(student2).map(obj->obj.getAge()).orElse(40);
		System.out.println(age2);//28
	}
	
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值