本文共 2042 字,大约阅读时间需要 6 分钟。
java.util.Optional类
Optional类:为了在程序中避免出现空指针异常而创建的。
Optional 类(java.util.Optional) 是一个容器类,它可以保存类型T的值,代表 这个值存在。或者仅仅保存null,表示这个值不存在。原来用 null 表示一个值不 存在,现在 Optional 可以更好的表达这个概念。并且可以避免空指针异常* 常用的方法:ofNullable(T t)* orElse(T t) Girl girl = new Girl(); girl =null; //of(T t):保证t是非空的// Optionalgirl1 = Optional.of(girl);//会报NullPointerException异常// System.out.println(girl1); //ofNullable(T t):t可以为null Optional girl2 = Optional.ofNullable(girl); System.out.println(girl2);//Optional.empty System.out.println("****************************"); //orElse(T t1):如果单前的Optional内部封装的t是非空的,则返回内部的t. //如果内部的t是空的,则返回orElse()方法中的参数t1. Girl orElse = girl2.orElse(new Girl("xixi", 24)); System.out.println(orElse);
能保证如下的方法执行中不会出现空指针的异常。
public String getGirlName(Boy boy){ return boy.getGirl().getName(); } //优化以后的getGirlName(): public String getGirlName1(Boy boy){ if(boy != null){ Girl girl = boy.getGirl(); if(girl != null){ return girl.getName(); } } return null; }
//使用Optional类的getGirlName():
public String getGirlName2(Boy boy){ OptionalboyOptional = Optional.ofNullable(boy); //此时的boy1一定非空 Boy boy1 = boyOptional.orElse(new Boy(new Girl("赵丽颖", 30))); Girl girl = boy1.getGirl(); Optional girlOptional = Optional.ofNullable(girl); //girl1一定非空 Girl girl1 = girlOptional.orElse(new Girl("杨幂", 35)); return girl1.getName(); }
@Test public void test2(){ Boy boy = new Boy();// String girlName = getGirlName(boy);// System.out.println(girlName);//NullPointerException异常 String girlName1 = getGirlName1(boy); System.out.println(girlName1); System.out.println("*********************"); String girlName2 = getGirlName2(boy); System.out.println(girlName2); }
转载地址:http://ntuki.baihongyu.com/