Java避免空指针

12 篇文章 0 订阅
2 篇文章 0 订阅
Java避免空指针
====

1.空指针引起的原因
----
* 调用空对象的方法
* 访问或更新空对象的变量
* 获取空集合的长度
* 访问或更新空集合中的内容
* 抛出空的Throwable对象
* 同步空对象

2.避免空指针
----
为避免空指针,应当在使用之前确保对其做了适当的初始化。

1. 比较字符串时,模板在前,如:
	> Sting str = null;
	> if("test".equals(str)){
	> //do something
    > }
2. 检查方法传进来的参数是否为空,如:
	> public static int getLength(){
    > if(s == null){
    > throw new IllegalArgumentException("The argument cannot be null");    > 
    > }
    > return s.length();
    > }

3. 使用String.valueOf()而不是toString()
4. 使用三元操作符,如:
	> String message = (str == null) ? "":"message";
5. 方法返回空集合,而不是null,如:
	> private static List<Integer> getList(String jsonData){
    > if(jsonData == null){
    > return Collections.emptyList();
    > }
    > //do something
    > }
6. 使用Apache StringUtils类(如果是Android的话,可以使用TextUtils.isEmpty()方法),如:
	> if(TextUtils.isEmpty(str))
7. 合理使用contains(),containsKey,containsValue等方法,如:
* 
	> Map<String, String> map = ...
	> ...
	> String key = ...
	> if(map.containsKey(key)){
    > //do something
    > }
* 	> JSONObject jsonObject= new JSONObject() ;
    > String key = ...
    > if (jsonObject.has(key)) {
    > try {
    > long result = jsonObject.getLong(key);
    > } catch (JSONException e) {
    > e.printStackTrace();
    > }
    > }
8. 检查外部方法的返回值是否为空
9. 使用Assertions(断言),如:
	> public static int getLength(String str){
    > /*确定string不为空*/
    > assert(str!=null);
    > return str.length();
    > }
	
    	此时如果str为空,那么则抛出java.lang.AssertionError异常而不是空指针异常
10. 使用Unit Tests

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值