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

原文地址:https://www.cnblogs.com/xieping/p/4784523.html