小知识--TextUtils.isEmpty与String.isEmpty

1、TextUtils.isEmpty与String.isEmpty

java中,String 类下的 isEmpty( ) 返回的只是 字符串的长度是否为0,如果 字符串为null 就会直接报空指针。源码如下:
public boolean isEmpty() { return count == 0; }

android中,TextUtils.isEmpty(要判断的字符串) 会对 null 和长度进行判断,所以不会报空指针。源码如下:
public static boolean isEmpty(@Nullable CharSequence str) { if (str == null || str.length() == 0) return true; else return false; }

使用TextUtils.isEmpty()遇到的坑

Android开发中,我们经常使用TextUtils.isEmpty()来判断字符串是否为null或者空字符串,防止出现空指针异常,有一天执行报出了空指针异常 。如下

java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference

满头黑线

查看源码

   /**
     * Returns true if the string is null or 0-length.
     * @param str the string to be examined
     * @return true if str is null or zero length
     */
    public static boolean isEmpty(CharSequence str) {
        if (str == null || str.length() == 0)
            return true;
        else
            return false;
    }

得出一般情况下使用是没问题的。
现在我们考虑这样一种情况:假设实体参数有一个属性 name,String类型。后台在响应这个属性到手机端的时候,是这样赋值的 name = null + “”,这样就会报错。

安全写法
!((TextUtils.isEmpty(name)) && ("null".equalsIgnoreCase(name)))

参考:小知识–TextUtils.isEmpty与String.isEmpty

   使用TextUtils.isEmpty()遇到的坑

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值