Java避免空指针

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 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 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

你可能感兴趣的:(android)