Почему неправильно, если вы пытаетесь переписать HashCode () и Equals () в классе Enum?

Я ищу информацию об этом, но не могу ее найти. Посмотрим, сможете ли вы мне помочь.

Если Java обрабатывает enum так, как если бы они были классами , почему она не позволяет перезаписывать HashCode и равно ?

Заранее благодарю и приветствую

1
задан 29.11.2019, 06:02
1 ответ

Хотя объектный код enum, если он превращается в класс, эти не требуют getHashCode() и equals() благодаря тому, что когда бы то ни было ты сравниваешь инстанции enum, а стоимость Ваших свойств .

Например, давайте предполагать, что у нас есть enum:

public enum Color{
   BLUE, RED, WHITE
}

, Который составленный был бы:

public final class Color extends java.lang.Enum<Color>
{
  public static final int BLUE = 1, RED = 2, WHITE = 3;
}

, Если ты хочешь сравнить, если стоимость enum равна другой, всегда ты сравниваешь стоимость свойства, не инстанцию enum:

Color blue = Color.BlUE;
boolean equals = blue === Color.WHITE; // Se comprar el valor con la propiedad WHITE

, Который переведенный был бы:

int blue = Color.BlUE;
boolean equals = blue == Color.BLUE; // comparando las propiedades estaticas de la clase Color.

а следовательно не требуются эти методы в enum. Этого разум, который не позволяет тебе осуществлять их.

1
ответ дан 01.12.2019, 10:39