Integer中的equals可能会让你的代码出现小bug

/ 小问题积累 / 1 条评论 / 1224浏览

下面是Integer的equals源码

    public boolean equals(Object obj) {
        if (obj instanceof Integer) {
            return value == ((Integer)obj).intValue();
        }
        return false;
    }

这个方法很好理解,但是这里我们需要注意一个小坑,参数是Object,这样在调用的时候,如果你记不得当前调用的属性是什么类型,那么直接调用其实就算是这样:


String a = "2020";
Integer b = 2020;
b.equals(a)

这样调用的话,是不会有编译时异常的,并且允许的时候也不会报错,所以这里需要注意了,你的代码可能达不到你的效果,但是这纯属时因为忘记了变量的类型,而刚巧代码没有报错,一个小点记录一下

  1. https://mp.weixin.qq.com/s/yCKIk6_jssQQevGt263r0A