java 8 Optional 解决NullPointerException
来源:互联网 发布:数据库在企业中的应用 编辑:程序博客网 时间:2024/05/24 01:24
在Java8中,引入了一个新的类java.util.Optional ,这个Optional专门用来解决空引用的问题。对于一个方法的返回值什么的,都不需要再判断是不是null了。
package com.ven.java8.Optional;import java.util.Optional;/** * 解析Optional * * @author xiaowen * */public class TestOptional {public static void main(String[] args) {// 创建一个对象SysUser sysUser = new SysUser("xiaowen", "男");String role = "JAVA IT";// ***************创建Optional部分 start*******// 使用of方法创建OptionalOptional<SysUser> optional = Optional.of(sysUser);Optional<String> optional3 = Optional.of(role);// Optional<SysUser> optional2 =// Optional.of(null);//如果传入的参数为null就会出现异常java.lang.NullPointerException// ofNullable(T)可有任意对象创建对象// Optional<SysUser> optional3 = Optional.ofNullable(null);// empty()返回一个空的Optional// Optional<SysUser> optional4 = Optional.empty();// ************************创建Optional部分 end******// ***********************Optional方法的使用******// get(),获取Optional中的对象SysUser sysUser2 = optional.get();System.out.println("对象:" + sysUser2);// isPresent()判断当前对象是否存在boolean present = optional.isPresent();// 类似 if(value!=null)if (present) {System.out.println("大家好!我是" + sysUser.getName() + "我是一个可爱的boy!");} else {new Throwable("出现异常,当前对象为null!");}// filter方法,// 条件判断Optional里面的对象是否满足某一个条件// 类似 if(value!=null&&value.contains("xiaowen"))// 源码 接收一个断言接口Predicate参数对象,Predicate/* * public Optional<T> filter(Predicate<? super T> predicate) { * Objects.requireNonNull(predicate); if (!isPresent()) return this; * else return predicate.test(value) ? this : empty(); } */// optional.filter(x -> x.contains("ab")).ifPresent(x::print);if (optional.isPresent() && optional.get().getName().equals("xiaowen")) {System.err.print(optional.get().getName() + "_" + optional.get().getSex());} else {System.err.println("该对象不存在该属性!");}// map方法 可以对optional里面的对象的值做处理// 类似于// if(value!=null){// String name = name.toLowerCase();// if(name.length() >1){// System.out.println(name);// }// }// 转换变量Optional<String> filter = optional3.map(String::toLowerCase).filter(result -> result.length() > 1);System.out.print("转换过后的变量:" + filter.get());// orElse 当Optional里的数据为null,想返回一些默认值// 类似// int defaultValue = (x!=null)?x:-1;String orElse = optional3.orElse("NON");System.out.println(orElse);// orElseThrow 值不存在 抛出异常// 类似// if (s != null && !s.isEmpty())// return s;// else// throw new IllegalArgumentException();// }optional3.filter(s -> !s.isEmpty()).map(s -> s.charAt(0)).orElseThrow(IllegalArgumentException::new);// 如果SysUser对象里面有一个Address对象,Address里面有addressName属性,这系都有可能为null,在// java8之前的版本判断是否为null的情况/* * public boolean judge(){ if(sysUser!=null){ * if(sysUser.getAddress()!=null){ * if(sysUser.getAddress().getAddressName()!=null){ return true; } } * * } return false; } */// 当然也这样判断非空// return // sysUser!=null&&sysUser.getAddress()!=null&&sysUser.getAddress().getAddressName()!=null; //Optional转换为List/*public static <T> List <T> toList(Optional<T> optional){return optional.map(Collections::singletonList).orElse(Collections.emptyList());}*/}}
0 0
- java 8 Optional 解决NullPointerException
- 解决java.lang.NullPointerException
- Guava Optional 和 Java 8 optional
- Java 8: Optional
- Java 8之Optional
- Java 8 Optional详解
- Java 8 Optional
- Java 8 Optional
- java 8 Optional类
- hibernate java.lang.NullPointerException解决
- Java 8 Optional 续1
- Java 8 Optional 类 学习
- Java 8的Optional类
- Java Optional
- JAVA Optional
- 菜鸟学java:NullPointerException异常的解决。
- java.lang.NullPointerException的问题与解决
- 浅谈java开发NullPointerException解决方式
- Python爬虫实例一
- 三:Job 和 JobDetail 详细介绍
- Chrome开发者工具
- 四步轻松实现用Visio画UML类图
- Toast 与 Snakebar-->受够了瞎吐司
- java 8 Optional 解决NullPointerException
- hive数据库定义
- 四:Trigger
- iOS 学习笔记 视图切换
- 利用Profile构建不同环境的部署包
- 返回/设置时间的方法
- Android客户端和服务器以TCP&&UDP方式互通之Socket通信原理
- 泰管家官网微信扫二维码,非微信浏览器直接下载app
- laravel框架ajax编写格式