Android 开发中的空指针
来源:互联网 发布:linux清空文本内容 编辑:程序博客网 时间:2024/06/05 07:44
概述:
在实际编码中总是会遇到 空指针异常 ,本文总结了一些处理空指针的个人经验。
原则:
尽早的检查,尽早的失败。
比如: 通过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/
阅读全文
0 0
- Android 开发中的空指针
- android 开发中的奇怪空指针
- Android中的getLastKnowLocation空指针异常
- android中的空指针异常NullpointExcepiton
- java中的空指针
- c中的空指针
- android 中的inclue标签中出现的空指针问题
- android空指针异常
- android 空指针异常
- Android开发中setOnclicklistener抛出空指针的解决办法
- JAVA中的空指针异常
- 结构体中的空指针
- spinner中的空指针错误!
- fragment中的空指针问题
- Java中的空指针异常
- c++ 中的空指针和void指针
- C++中的空指针和野指针
- C语言中的空指针、空指针常量、NULL & 0
- C 语言控制语句
- git分支、合并的使用记录
- java中容器集合框架的分类
- 守护进程daemon的创建和使用
- git的.gitignore文件的修改规则
- Android 开发中的空指针
- Nodejs异步流程控制Async
- PTA 数据结构2-4
- Linux获取当前时间
- Jenkins使用教程之创建job
- windows下SDL使用ndk-build编译失败问题
- sge集群搭建
- css实现两个div填满一行
- Intellij idea:Method breakpoints my dramatically slow down debugging