NullPointerException的一次记录

本文探讨了Java中使用SpringMVC框架时,前端传递参数到后台的方法,并详细解释了如何避免因参数未传导致的空指针异常问题。文章通过一个具体的示例说明了基本类型和包装类型的自动装箱拆箱过程,以及这一过程中可能出现的问题。

第一次写博客,希望是一个美好的开始。

对于java而言,我们都知道有8个基本类型,而每个基本类型都会有对应的包装类型,至于基本类型以及对应的包装类型这里不作列举了。像int对应的包装类型是Integer,有的时候,我们通过前端进行传入参数到后台,像springmvc,我们在后台会进行参数的绑定,举一个比较简单的例子,地址 :http://127.0.0.1:8080/getUserInfo?userId=2类似这样的一个请求,我们的后台一般都这样写  :

@RequestMapping("/getUserInfo")

public String getUserInfo(Integer userId){

    if(userId != null && userId  != 0){

        ...

    }

}

但是在有的时候我们可以会在前端进行校验,保证输入参数的合法性,所以有的时候我们会直接这样去操作

直接进行 userId != 0的条件判断,但是很多时候,如果该参数没有传入,我想表达的就是在该对象是null的情况下,如果直接进行如下判断则会抛出空指针异常问题。

其实看到报错大概也是知道是什么原因了。我们都知道在常用类型和对应的包装类型进行相互转换的过程中会有自动装箱拆箱的操作,这是自JDK1.5之后新增的特性,然而或许大家只是知道有这个特性,但是具体在进行装箱和拆箱的过程中做了哪些事,或许并不是十分了解。

当我们执行 

userId != 0时,Integer内部会先进行拆箱操作,在进行拆箱操作时当我们传入的为null时,必然会导致方法内部抛出空指针异常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值