NPE nullpoNullPointerException问题

Posted BBinChina

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NPE nullpoNullPointerException问题相关的知识,希望对你有一定的参考价值。

编程开发中,我们经常会遇到空指针null point问题,强硬如C++会引发程序崩溃无法正常工作,所以空指针在C++程序中是特别敏感的,使用者需要时时刻刻进行检测。

以下代码在cpp非常常见

Point* p = func();
if (p!=nullptr) 


当使用java进行开发时,因为Java程序"怎么写都不会崩"的特性导致使用者产生了惰性。
在Java封装类型(Double、Long、Integer)等类型的加持下,Java程序中的NPE问题越发常见:访问空指针引发的nullpoNullPointerException异常。

尽管程序不崩,但不代表其健壮性(还需要正常处理业务呀),异常导致业务流程中断。

  • 说明:
    1、返回类型为基本数据类型,return包装数据类型的对象时,自动拆箱有可能产生NPE。
    2、RPC接口采用基本类型时,java会对其进行初始化,比如:int a ,double b 分别为0 ,0.0等,会对调用方产生误解(0不等同于null),null是无效值。
    3、局部变量使用基本数据类型减少封装包拆解损耗,局部变量需要当前使用者识别有效值无效值情况。

  • 阿里的Java编程规范要求:

关于基本数据类型与包装数据类型的使用标准如下:
 1) 所有的POJO类属性必须使用包装数据类型。
 2) RPC方法的返回值和参数必须使用包装数据类型。
 3) 所有的局部变量推荐使用基本数据类型。

说明:POJO类属性没有初值是提醒使用者在需要使用时,必须自己显式地进行赋值,任何NPE问题,或者入库检查,都由使用者来保证。

以上是关于NPE nullpoNullPointerException问题的主要内容,如果未能解决你的问题,请参考以下文章

无法暂停活动。 NPE

单元测试 NPE,当我添加片段自定义转换时

为啥我在使用 Mock 注释时有 NPE

万恶的NPE差点让我半个月工资没了

NPE的原因是啥?

Java 8 Optional:优雅地避免 NPE