一个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;
}
}

浙公网安备 33010602011771号