Как правило, объекты разных типов не определены равными, потому что для удовлетворения симметрии, предписанной договором о равенстве, оба класса должны знать друг о друге.
Более того, поскольку равенства должны быть переходными (что также предусмотрено договором равных), введение вашего правила будет иметь странные последствия. Рассмотрим:
enum Color {
green, red, blue;
}
enum Experience {
green, novice, veteran;
}
Должно ли Color.green
равняться Experience.green
? Наверное, нет, поскольку опыт и цвет действительно разные вещи. Но если "green".equals(Color.green)
и "green".equals(Experience.green)
, Color.green
должно быть равно Experience.green
.
Таким образом, общее правило таково: объекты не связанных типов не равны.