Optional是一个没有子类的工具类,Optional是一个可以为null的容器对象。它的作用主要就是为了解决避免Null检查,防止NullPointerException。以前对null的处理方式Testpublicvoidtest01(){StringuserName凤姐;if(userName!null){System。out。println(姓名为:userName);}else{System。out。println(姓名不存在);}}Optional基本使用Testpublicvoidtest02(){1。创建Optional对象of:只能传入一个具体值,不能传入nullofNullable:既可以传入具体值,也可以传入nullempty:存入的是nullOptionalStringop1Optional。of(凤姐);;OptionalStringop2Optional。ofNullable(如花);OptionalStringop5Optional。ofNullable(如花);OptionalObjectop3Optional。empty();2。isPresent:判断Optional中是否有具体值,有值返回true,没有值返回falsebooleanpresentop1。isPresent();System。out。println(presentpresent);3。get:获取Optional中的值,如果有值就返回值具体值,没有值就报错System。out。println(op3。get());if(op1。isPresent()){System。out。println(op1。get());}else{System。out。println(没有值);}}Optional高级使用OptionalStringuserNameOOptional。of(凤姐);存在做的什么ifPresent:如果有值就调用参数userNameO。ifPresent(s{System。out。println(有值:s);}); 定义一个方法将User中的用户名转成大写并返回使用传统方式publicStringgetUpperUserName1(Useru){if(u!null){StringuserNameu。getUserName();if(userName!null){returnuserName。toUpperCase();}else{}}else{}} 使用Optional方式publicStringgetUpperUserName2(OptionalUserop){StringupperNameop。map(User::getUserName)。map(String::toUpperCase)。orElse(null);returnupperN}