Java 代码中如何预防空指针异常
2015-12-01 10:15
399 查看
项目中遇到的NullPointerException 分两种情况:
引用空对象,即调用空对象的方法或引用空对象的属性。
将8中基础类型的封装类赋值给对应的基础类。
个人在做项目时,对NullPointerException的几点总结。
1.对于别人接口的返回对象要做非空判断,因为我们不清楚获得的对象会不会为空,对于Collection Map 我一般会调用CollectionUtils MapUtils ,对于返回的String对象,我会调StringUtils.isNotEmpty()进行非空判断。他们中isNotEmpty不仅判断了NULL 还判断了空集合和空串。例如从数据中查询的结果。
对于自己创建的对象,要留心对象进行哪些操作,中间会不会造成对象为空,如果可能加非空判断,尤其是对于集合的操作,很容易就报空指针!!!所以每次对操作集合时,我都会非常的留心。
对于前台的领域对象要非常的留心,因为这些对象是框架创建的,假如我没有在前台的文本框内输入值,虽然提交时后台获得的是空串,但发生NullPointerException的概率很高。
对于String 的操作尽量使用apache 的StringUtils类,与String相比这个是非常的安全。对于集合的操作使用apache的CollectionUtils 、MapUtils, 相比apache工具类的执行效率也非常的高,比如StringUtils.split();
有人说过多的判断会影响性能,我个人认为这里的性能牺牲和系统的安全相比是微不足道的。
引用空对象,即调用空对象的方法或引用空对象的属性。
将8中基础类型的封装类赋值给对应的基础类。
个人在做项目时,对NullPointerException的几点总结。
1.对于别人接口的返回对象要做非空判断,因为我们不清楚获得的对象会不会为空,对于Collection Map 我一般会调用CollectionUtils MapUtils ,对于返回的String对象,我会调StringUtils.isNotEmpty()进行非空判断。他们中isNotEmpty不仅判断了NULL 还判断了空集合和空串。例如从数据中查询的结果。
对于自己创建的对象,要留心对象进行哪些操作,中间会不会造成对象为空,如果可能加非空判断,尤其是对于集合的操作,很容易就报空指针!!!所以每次对操作集合时,我都会非常的留心。
对于前台的领域对象要非常的留心,因为这些对象是框架创建的,假如我没有在前台的文本框内输入值,虽然提交时后台获得的是空串,但发生NullPointerException的概率很高。
对于String 的操作尽量使用apache 的StringUtils类,与String相比这个是非常的安全。对于集合的操作使用apache的CollectionUtils 、MapUtils, 相比apache工具类的执行效率也非常的高,比如StringUtils.split();
有人说过多的判断会影响性能,我个人认为这里的性能牺牲和系统的安全相比是微不足道的。
相关文章推荐
- Java 内存溢出(java.lang.OutOfMemoryError)的常见情况和处理方式总结
- 【java基础】运行jar应用程序引用其他jar包的四种方法
- struts2 filter版本
- 个人学习Java的真实经验
- JDK动态代理中关于InvocationHandler中invoke()方法的调用问题
- [解决异常] spring batch 报错 ORA-08177: 无法连续访问此事务处理
- Eclipse设置代码垂直对齐
- Struts2 验证码图片实例
- Caused by: java.sql.SQLException: The user specified as a definer ('eln'@'%') does not exist
- java抽象类的特点
- JDK自带加密算法sha-1
- Spring MVC常用的注解
- 【Java EE (Struts2 + Spring + Hibernate)开发】:Struts2(二)之【拦截器机制】
- [成也Java,败也Java]之[成也Java]
- Java Swing Graphics Graphics2D的一般用法
- 【Java EE (Struts2 + Spring + Hibernate)开发】:Struts2(二)之【Ajax 支持】
- JAVA自带的加密算法-MD5\SHA1\BASE64
- 02-SpringMVC_获得用户请求
- Java 接口和抽象类区别
- 02-SpringMVC_获得用户请求