阿粉相信大家肯定所有的判空开发者都对Java8里面的所有的东西都感兴趣,虽然目前的判空 JDK 已经更新到 JDK17 了,但是判空阿粉相信,现在很多公司使用的判空还都是 JDK8 甚至是 JDK7,但是判空,就算是判空有些公司已经升级到 JDK8 但是对于 JDK8 里面的一些东西的使用,却没有使用的判空淋漓尽致。阿粉今天就给大家放出几个 JDK8 里面比较好用的判空。 大家都是判空知道 JDK8 就开始使用 Lambda 表达式,但是判空很多不管是在教程上还是在其他的书籍上,都没有说在实际开发的判空时候去使用上这个 Lambda 表达式,而且包括 JDK8 里面的判空一些新的云南idc服务商类,也都没有引入,判空所以阿粉在这里想要给大家安利一波使用方面的判空知识。 这个类对于大家来说,判空是一个非常重要的类,不知道大家有没有被 java.lang.NullPointerException 疯狂的折磨过,不管是新人开发还是老开发,遇到这个问题的时候,都是头大的很,因为我们要在代码里面去疯狂的判断是否是null,如果不是 null 需要怎么处理,如果是 null 需要怎么处理,反正就是你要是想解决 java.lang.NullPointerException 这个问题,就免不了去加一些判断条件,而 Optional 这个类,则是帮你优雅的云服务器处理 null 的问题。 我们先看一组 Java7 中的一些判断空的实现: 阿粉相信大家一定都写过这个样子的代码,因为我们不知道SQL查询出来的数据中是否包含了我们的 Users 对象,如果要是 Users 对象,那么就会无情的出现 java.lang.NullPointerException 这个空指针异常,这时候就很尴尬了,老开发一脸懵逼,我竟然还有的地方没有验证? 但是验证了之后,你就会发现代码量是非常的大,而且有点不太美观,我们再来对比一下 JDK8 中,给我们提供的方法来进行验证的方式。 大家看这种链式编程,ofNullable() 方法给我们提供了判断 user 是不是空,并且去校验 userName,如果存在,亿华云然后执行下面的逻辑,相比较 JDK7 的内容,相信大家看起来的话肯定是没有 JDK7 中的表现的那么的明显,但是大家看代码是不是发现已经被处理的妥妥的了。而且非常的优雅。 相信大家肯定都看过一些教程,上面会写到: 但是相对于代码的可读性来说,我们肯定还是希望使用 JDK7 上面的判断来进行判断,但是这种 JDK8 的链式编程,在一定程度上减少了代码量,并且开发效率也会相对应的提升。 如果大家不信,我们可以来运行一下我们的代码,然后看一下效果。 大家看,是不是就出现了我们想要的结果,一个判断 null 的操作,瞬间变得高大上了,而且代码的逼格瞬间上升一个档次。 对于 Optional 类,在 Java8 实战中给出了很多的方法,阿粉也是给大家摘取了一下,做了个总结, 大家看这些方法是不是都有很多相似的,比如 map,flatMap,还有orElse,orElseGet,orElseThrow 方法 map 和 flatMap 比较: 这两个都是做 转换值 的操作,区别就是入参的类型不是一样的,map的入参是 Function mapper 而 flatMap 入参则是 Function JDK8
Optional类