admin管理员组文章数量:1599541
我一直都是用的idea,不得不说,真的是很智能、很顺手。所以在代码中碰到提示,我都会看一下,然后思考一下,为什么这么提示,是否有优化的地方。最令我满意的是这个发现是:idea这么牛,居然能判断当前环境线程是否安全????。今天在码代码时,又发现了一个idea的提示,让我思考了好一会儿
代码也很简单,如下:
有两个变量,我要组合判断他们为非空的情况,我按照我的想法写:1. a为空,b不为空;2. a不为空,b为空 ……当我写完之后发现,在第三种情况的判断下,idea给出了一个黄色的提示:
Condition ‘b == null’ is always ‘true’ when reached,我当时翻译的比较糙,意思就是 b永远为null,这是咋回事呢?为啥b永远为null。我知道if……else if……else……具有互斥性,我就开始分析:
- 如果不走第一个判断,那么可以得到两点结论:
- a不为null时,b一定不为null
- a为null时,b可以为null也可以不为null。
第2点是废话,但是第1点是有效的结论。
- 如果不走第二个判断,那么也可以得到两个结论:
- a为null时,b一定为null,
- a不为null时,b可以为null也可以不为null。
第4点是废话,但是第3点是有效的结论。
所以,如果前两个判断都不走,走到第三个判断,那么可以得到两点有效结论:
- a不为null时,b一定不为null
- a为null时,b一定为null,
所以,当我在写else if (a == null && b == null),写到a==null时,idea就非常智能的提示:Condition ‘b == null’ is always ‘true’ when reached,因为此时b一定为null,&& b == null 是多余的。
其实仔细想想也是,如果除开了上面最先的两种情况,if (a != null && b == null)和(a == null && b != null),那么剩下的只有 a==null && b==null 和a !=null && b != null。当a==null时,b就不用判断了,一定是null。只是按照常人的思维,一定一按照:当 a为空,b不为空;当a不为空,b为空 ;当a为空,b为空;当a不为空,b不为空的逻辑去写的 。
版权声明:本文标题:两个变量组合判空,idea智能提示Condition ‘b == null‘ is always ‘true‘ when reached 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1728323656a1154156.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论