首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android开发 - 处理 null 和 预防空指针异常(NullPointerException) 的一些经验

Android开发 - 处理 null 和 预防空指针异常(NullPointerException) 的一些经验

作者头像
张云飞Vir
发布2020-03-16 16:05:45
2.1K0
发布2020-03-16 16:05:45
举报
文章被收录于专栏:写代码和思考写代码和思考

概述:

在实际编码中总是会遇到 空指针异常 ,本文总结了一些处理空指针的个人经验。

原则:

尽早的检查,尽早的失败。

比如: 通过intent传参到新的目标 activity,而且一定需要这个参数,那么在新的目标activity中 onCreate方法中 判断中这个参数,如果null,直接抛出空指针异常让程序崩溃。取代在使用该参数时进行检查,这样能更早的发现问题。或者在 一个普通的方法中,一个 参数必须不能为null ,那么我们在这个方法的第一行就做出判断,如果参数为null,抛出空指针异常。

一些方法:

1.不要在Set中使用null 2.不要把null作为map的键值。 3.尽可能的尽早检查,如果为 null 不执行或者 结束本方法 4.遇到必须的参数,比如通过intent传参到新的目标 activity,而且一定需要这个参数,那么在新的目标activity中判断是否有参数

        if(getIntent() == null) throw new NullPointerException("缺少必须的参数");
        if(!getIntent().hasExtra("argument_name")) throw new NullPointerException("缺少必须的参数");

5.判断字符串是否空

    if(TextUtils.isEmpty(str)){
        //doSometing
    }

6.对字符串比较时,如果和常量进行比较,把常量放在前面,比如:

    “good".equals(var)  优于  var.equals("good")

7.将某个对象 toString时,比如:

    String.valueOf(obj)   优于  obj.toString()

8.使用注解 @NonNull 和 @Nullable 配合AndroidStudio 帮你检查你是否没有检查可能为null的对象,或者你是否做了多余的检查。

9.我们引用Guava来帮忙检查 null 的情况,我们使用 checkNotNull 方法来替代写 if( obj == null) throw new NullPointExcetion(); ,示例:

public void print2(@NonNull MyObject act) {
    checkNotNull(act);
    Log.i(TAG, "print2 " + act.name);
}

扩展:

Guava是什么:

Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如:集合 [collections] 、缓存 [caching] 、原生类型支持 [primitives support] 、并发库 [concurrency libraries] 、通用注解 [common annotations] 、字符串处理 [string processing] 、I/O 等等。 所有这些工具每天都在被Google的工程师应用在产品服务中。
Guava工具类对Null值都采用快速失败操作

添加项目引用

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile "com.google.guava:guava:18.0"
}

参考:

http://ifeve.com/google-guava/

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述:
  • 原则:
  • 一些方法:
  • 扩展:
  • 添加项目引用
  • 参考:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档