欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java不要再使用!=null判空了!

程序员文章站 2022-04-06 13:03:24
前言对于java程序员来说,null是令人头痛的东西。时常会受到空指针异常(npe)的骚扰。连java的发明者都承认这是他的一项巨大失误。那么,有什么办法可以避免在代码中写大量的判空语句呢?有人说可以...

前言

对于java程序员来说,null是令人头痛的东西。时常会受到空指针异常(npe)的骚扰。连java的发明者都承认这是他的一项巨大失误。

那么,有什么办法可以避免在代码中写大量的判空语句呢?

有人说可以使用 jdk8提供的 optional 来避免判空,但是用起来还是有些麻烦。

作者在日常工作中,封装了一个工具,可以可以链式调用对象成员而无需判空,相比原有的if null逻辑 和 jdk8提供的 optional 更加优雅易用,在工程实践中大大提高了编码效率,也让代码更加的精准和优雅。

不优雅的判空调用

我想从事java开发的小伙伴肯定有遇到过下面这种让人难受的判空逻辑:现在有一个user类,school 是它的成员变量

现在想要获得school的成员变量 adress , 一般的处理方式:

获取adress时要对school进行判空,虽然有些麻烦,到也能用,通过 jdk8 提供的 optional 工具也是可以,但还是有些麻烦。

而下文的 optionalbean 提供一种可以链式不断地调用成员变量而无需判空的方法,直接链式调用到你想要获取的目标变量,而无需担心空指针的问题。

链式调用成员变量

如果用了本文设计的工具 optionalbean ,那么上述的调用可以简化成这样:

执行结果:

Java不要再使用!=null判空了!

其中user的school变量为空,可以看到代码并没有空指针,而是返回了null。这个工具怎么实现的呢?

optionalbean 工具

工具设计主要参考了 optional 的实现,再加上对链式调用的扩展就是上述的optionalbean。

getbean 其实是当变量为空时返回了一个 包装空值的 optionalbean 对象,同时泛型的使用让工具更加易用。

使用手册

可以看到代码中也提供了和 optional 一样的扩展方法,如 ifpresent()、orelse()等等:

run一下:

Java不要再使用!=null判空了!

总结

设计了一种可以链式调用对象成员而无需判空的工具让代码更加的精准和优雅,如果本文设计的工具满足了刚好解决你的困扰,那就在项目中使用吧!

到此这篇关于java不要再使用!=null判空的文章就介绍到这了,更多相关java不使用!=null判空内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

相关标签: !=null 判空