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
Java避免空指针
最新推荐文章于 2024-07-17 08:47:03 发布