柚子猫甜心vlog最新视频解析:不止是萌宠,更是生活态度的全方位展现

核心内容摘要

5G影院:解锁极致视听盛宴,点燃你的每一天!
独属你的数字勋章:17c永久地域网名精选,刻画灵魂的地理坐标

域名停靠2023网站推广大全:引爆流量,抢占先机!

Optional的核心减少代码里出现 空指针异常NullPointerException的情况常见使用场景当你想使用某个对象中的方法但又不清楚这个对象是不是为null这个时候你就会想到用if( xxx ! null)来判断这个对象是不是null而Optional的出现就可以替换这行代码不需要每次都去判断对象。

定义审批实体Approveimport lombok.*; import java.time.LocalDateTime; import java.util.List; Data NoArgsConstructor AllArgsConstructor public class Approve { private String approveId; private CreateApprove createInfo; } Data NoArgsConstructor AllArgsConstructor class CreateApprove { private String creator; private LocalDateTime createTime; }具体Demo--1import java.util.*; public class OptionalDemo { public static void main(String[] args) { //假设这是从数据库拿到的数据数据库返回的就是null Approve app null; //链式加载一个个方法依照调用顺序依次执行 //ofNullable方法 将对象包装成Optional对象如果传入对象是nullofNullable会创建一个 Optional.EMPTY对象 Optional.ofNullable(app) .filter(p - p.getApproveId().equals(approveId-A)) //兜底如果传入对象为 null或者filter过滤出来的结果是EMPTY。

就会执行orElse()方法 .orElse(new Approve()); // 等价于上面Optional的逻辑 if (app ! null) { if (app.getApproveId().equals(approveId-A)) { } else { app new Approve(); } } } }ofNullable() 方法ofNullable方法的作用是将传入的对象进行包装。

其实就是创建一个Optional对象并将传入的对象赋值给Optional对象的value属性。

如果传入的对象是nullofNullable方法会返回一个空Optional对象value是空的这个是空Optional对象是单例的全局只会创建这么一个实例。

为什么filter方法没有报空指针因为 isPresent() 会判断当前Optional对象的value是否为null如果value是null就会直接返回而不会继续执行断言Predicate从而避免空指针。

其他的Optional方法也是同理都会优先判断当前Optional对象里的value是否有值才会进行后面的逻辑。

orElse() 方法 和 orElseThrow() 方法两个方法都是用来兜底当value不存在才会使用传递过去的形参否则返回当前Optional的value以orElse为例如果当前Optional对象的value不为空那就返回value值如果value为空才返回orElse方法传递过来的参数具体Demo--2import java.time.LocalDateTime; import java.util.*; import java.util.function.Function; public class OptionalDemo { public static void main(String[] args) { //假设这是从数据库拿到的数据数据库返回的就是null Approve app null; //链式加载一个个方法依照调用顺序依次执行 //ofNullable方法 将对象包装成Optional对象如果传入对象是nullofNullable会创建一个 Optional.EMPTY对象 Optional.ofNullable(app) .filter(p - p.getApproveId().equals(approveId-A)) //兜底如果传入对象为 null或者filter过滤出来的结果是EMPTY。

就会执行orElse()方法 .orElse(new Approve()); // of方法如果传入对象是null直接就报空指针无法执行 orElseThrow()方法 //链式加载如果在某一步报错是不会继续执行的 // Object o Optional.of(null).orElseThrow(() - new RuntimeException(数据为空)); Approve approve new Approve(); approve.setApproveId(approveId-A); approve.setCreateInfo(new CreateApprove(创建人小胡, LocalDateTime.now())); //定义一个函数式接口 FunctionApprove, CreateApprove function (p) - { return p.getCreateInfo(); }; // map 方法会返回一个新的Optional对象 OptionalCreateApprove opCreate Optional.of(approve) //保留approveId是approveId-A的 .filter(po - po.getApproveId().equals(approveId-A)) //提取对象的createInfo信息 // 等价于 .map(po - po.getCreateInfo()); .map(function); CreateApprove ca Optional.of(approve) //保留approveId是approveId-A的 .filter(po - po.getApproveId().equals(approveId-A)) //提取对象的createInfo信息 //等价于 .map(po - po.getCreateInfo()) .map(Approve::getCreateInfo) //filter() 方法过滤之后没拿到 approve 对象 //或者 map() 提取到的 createInfo 是 null //就会触发 orElseThrow() 方法抛出异常如果有数据就不会抛异常则返回value .orElseThrow(() - new RuntimeException(获取数据为空)); } }map()方法map方法最后也是调了ofNullable方法如果有值则会创建新的Optional对象如果为null就会返回全局唯一的那个空Optional实例。

四川妈妈爱上儿子视频中文版-四川妈妈爱上儿子视频中文版应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123