public boolean equals(Object obj) {
if (obj instanceof Long) {
return value == ((Long)obj).longValue();
}
return false;
}
可见Long类型的判等本身就是对值的判等,故不需要对Long做手动拆箱(即b.longValue())操作:
Long a = 1L;
Long b = 3L;
a.equals(b); //这样既可
a.equals(b.longValue()); //无需这样
此处以ArrayList的contains为例,可见当为Long时,该方法调用是equals作对比,而equals已自动拆箱,故无需再手动拆箱。
public boolean contains(Object o) {
return indexOf(o) >= 0;
}
public int indexOf(Object o) {
if (o == null) {
for (int i = 0; i < size; i++)
if (elementData[i]==null)
return i;
} else {
for (int i = 0; i < size; i++)
if (o.equals(elementData[i]))
return i;
}
return -1;
}