假设我有一个名为 的类Number
,我打算对对象进行大量的相等比较Number
。我担心泛型Number::equals(Object o)
方法的“开销”(类比较等)。Number::isEqualTo(Number other)
在这种情况下,提供一种方法是否有用,例如Number::equals(Object o)
? 这是一种常见的模式吗?或者 JVM 当前是否优化得足够好以至于这样做没有优势?
这是一个代码示例:
public class Number {
int _value;
Number(int value) {
_value = value;
}
@Override
public boolean equals(final Object o) {
if (o == this) return true;
if (o == null) return false;
if (o.getClass() != getClass()) return false;
return isEqualTo((Number)o);
}
public boolean isEqualTo(final Number other) {
return _value == other._value;
}
public static void main(String[] args) {
Number one = new Number(1);
Number two = new Number(2);
if (!one.isEqualTo(two)) {
System.out.println("fast comparison?");
}
if (!one.equals(two)) {
System.out.println("slow comparison?");
}
}
}