一个equals方法引发的错误

今天在写一个状态判断的时候,没有注意到其中一个对象为Short,另外一个是基本类型int,导致虽然数值相等但是equals方法返回false,查询Short方法和equals方法后得知,大多数类都重写了equals方法,重写的时候一般第一步就是判断类型是否相同,不同就返回false。所以虽然Short和int都是数字,Short也可以自动拆箱装箱,但是一旦调用了Short的equals方法,那么即使数值相同,类型不同也是会返回false的。

public boolean equals(Object obj) {
        if (obj instanceof Short) {
            return value == ((Short)obj).shortValue();
        }
        return false;
    }
}
posted @ 2020-05-30 18:41  go_and_get_it  阅读(7)  评论(0)    收藏  举报  来源