为什么Exception
类(例如RuntimeException)没有实现equals()
方法?
例如,这段代码的输出是false
:
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
final RuntimeException e1 = new RuntimeException("e");
final RuntimeException e2 = new RuntimeException("e");
System.out.println(e1.equals(e2));
}
}
是否有特殊原因未实现
equals()
方法?看起来这个方法非常有用。
编辑:让我详细解释一下问题,因为似乎大多数人认为equals()
的实现没有用处。
我想知道,为什么异常应该与普通对象不同对待,只有在相同实例时才匹配。难道它没有足够的信息来与其他对象进行比较吗?例如,底层的StackTraceElement,我假设它存储调用堆栈,已经实现了一个equals
方法。
在异常的定义中是否有阻止它们基于其属性实现等效方法的内容?
RuntimeException
对象,请创建一个自己的子类,重写equals
方法。 - deyur