当对象或对象属性为空时,如何安全给对象或对象属性添加默认值

Posted 香吧香

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当对象或对象属性为空时,如何安全给对象或对象属性添加默认值相关的知识,希望对你有一定的参考价值。

今天遇到的问题,也是写代码的习惯问题,逻辑没有问题,但不规范,也不安全,

容易出现漏洞。

先将代码贴出:

 String isPrintLogo = vodInfoDto.getIsPrintLogo();
            if(!isPrintLogo.equalsIgnoreCase("0")){
               isPrintLogo="1";
                demandVideoInfo.setIsPrintLogo(isPrintLogo);
          }

代码原意为:判断对象属性,并给对象的该属性判断是否为预定的值,

如果不是,则进行设置默认值。

本能的想为对象的属性不为空,当对象的属性不为空时,代码则会正常运行。

但当对象为空或对象的属性为空是,则会产生空指针异常。

遇到了以为大神,请教他之后,他给出了两种方案,

一种是 :

String isPrintLogo = vodInfoDto.getIsPrintLogo();
            if(!"0".equalsIgnoreCase("isPrintLogo")){
               isPrintLogo="1";
                demandVideoInfo.setIsPrintLogo(isPrintLogo);
          }

将比较的属性值放入到equals后面中,也会规避异常出现。

另一种是:

        demandVideoInfo.setIsPrintLogo("null".equalsIgnoreCase(isPrintLogo)?"1":isPrintLogo);
通过一个三元运算,就可以轻松搞定,实在是高,特此进行记录。

以上是关于当对象或对象属性为空时,如何安全给对象或对象属性添加默认值的主要内容,如果未能解决你的问题,请参考以下文章

vue中当数据为空时的处理

当属性可以是整数或布尔值时,啥解析对象?

HTML5自学笔记[ 3 ]表单验证反馈

Javascript:检查对象是不是没有属性或映射/关联数组是不是为空[重复]

当过滤字符串为空时,如何停止 Graphql + Django-Filters 返回所有对象?

如何将对象(或关联数组)作为属性值传递给我的 Web 组件