Android开发中,参数判空失败

Android开发中,参数判空失败

参数判空

在Android开发过程中,我们肯定会需要接收服务端传过来的参数,以及别的页面和其他情况下传过来的参数,开发需求需要对其进行判空操作,有时候你会发现,你判空操作没效果,这是为什么呢?首先来看下面的判空操作:

     if (bean.getImageList() == null) {
            rvImageShow.setVisibility(View.GONE);
            goneView2.setVisibility(View.GONE);
        } else {
            rvImageShow.setVisibility(View.VISIBLE);
            iamgeAdapter.setImageList(bean.getImageList());
        }

上面这段代码就是从服务端获取一个参数然后进行判空,如果判空就隐藏某个视图,如果不为空就显示那个视图,你是不是觉得上面的写法木有问题???
如果是,那恭喜你,你太菜了·!!!
上面的判空存在一个问题,那就是你虽然判断了获取的list是否为空,但是如果list中的参数就是空参,没有值的,那么list此时就不是空list了,那么代码执行的时候就会直接显示else中语句,所以上面的写法是不正确的,正确的写法如下:

if (bean.getImageList() == null || bean.getImageList().size() == 0) {
            rvImageShow.setVisibility(View.GONE);
            goneView2.setVisibility(View.GONE);
        } else {
            rvImageShow.setVisibility(View.VISIBLE);
            iamgeAdapter.setImageList(bean.getImageList());
        }

第二种判空情况

直接上代码,你肯定懂这个逻辑,但是下面代码有问题,你知道是为什么吗?

if (bean.getBarCode()!=null) {
            tvGoodsCode.setText("条码:" + bean.getBarCode());
        } else {
            tvGoodsCode.setVisibility(View.GONE);
        }

其实这个问题和上面问题一样的,正确的写法如下:

if (!TextUtils.isEmpty(bean.getBarCode())) {
            tvGoodsCode.setText("条码:" + bean.getBarCode());
        } else {
            tvGoodsCode.setVisibility(View.GONE);
        }

你可以打开TextUtils.isEmpty()这个方法,这个方法中会告诉why之前那个是错误的

 public static boolean isEmpty(@Nullable CharSequence str) {
        return str == null || str.length() == 0;
    }

看到这里,我相信你应该已经懂了。

总结

在开发过程中,需要对参数判空时,不能直接写(xx==null)这样的写法是错误,你需要考虑到参数可能就是个空参数,所以在判空的时候不能只写null还需要进一步判断。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值