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问题,或者入库检查,都由使用者来保证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值