Pregunta ¿Cómo enseñar eclipse para generar comparables equals () y hashCode () de la clase jdk 7 Objects?


Hace algunos días cambiamos a Java 7 dentro de mi empresa, ¡finalmente! Jay \ o / Así que descubrí sobre el Objects clase y se sorprendió de lo cortos que son los métodos hashCode() y equals() se realizaron, reduciendo una gran cantidad de códigos de placa de enganche en comparación con los generados por eclipse por defecto (ALT + MAYÚS + S -> H).

Me preguntaba si podría cambiar el comportamiento predeterminado del eclipse generado hashCode() y equals()?

Me encantaría ver esto:

@Override
public int hashCode()
{
  return Objects.hash(one, two, three, four/*, ...*/);
}

en lugar de esto:

@Override
public int hashCode()
{
  final int prime = 31;
  int result = 1;
  result = prime * result + ((one == null) ? 0 : one.hashCode());
  result = prime * result + ((two == null) ? 0 : two.hashCode());
  result = prime * result + ((three == null) ? 0 : three.hashCode());
  result = prime * result + ((four== null) ? 0 : four.hashCode());
  // ...
  return result;
}

Lo mismo va para equals(). Este es el articulo Obtuve esto de.

¿Alguna idea de cómo hacer esto mejor?


32
2017-07-22 07:24


origen


Respuestas:


En las preferencias de Eclipse, vaya a Java> Editor> Plantillas.

Allí puedes crear una nueva plantilla. El patrón podría verse así:

@Override
public int hashCode()
{
     return Objects.hash(one, two, three, four/*, ...*/);
}

No estoy seguro de si hay una variable que enumerará correctamente sus campos sin embargo.

Es posible que desee mirar algunas explicaciones adicionales sobre estas plantillas


4
2017-07-22 07:27



Hay un nuevo plugin disponible que puede generar los métodos toString (), hashCode (), equals () usando las características de java 7, la biblioteca común de apache, la biblioteca guava. Tiene buenas características personalizables. Encuentre el siguiente enlace para instalar el complemento. Después de la instalación, simplemente haga clic derecho -> Jenerate -> diferentes opciones

El enlace - https://marketplace.eclipse.org/content/jenerate


2
2017-07-08 18:59



hashCode y equals generación usando Java 7 Objects la clase ahora se ha implementado en Eclipse. He estado trabajando en la solicitud de funciones 424214 en las últimas dos semanas y mi contribución ahora se ha fusionado en la base de datos de la IU de JDT (ver compromiso f543cd6)

Aquí hay una descripción general de la nueva opción en Fuente> Generar hashCode () y es igual a ... herramienta:

New option in generation tool

Está programado que se publique oficialmente en Eclipse 4.9, con vencimiento en septiembre de 2018. Puede probarlo de antemano descargando la integración de compilación I20180808-2000 o posterior (se pueden encontrar descargas) aquí) o instalando el último software disponible con el siguiente sitio de actualización: http://download.eclipse.org/eclipse/updates/4.9-I-builds/

Además de esta nueva característica, las matrices ahora se manejan de manera más inteligente. La generación usará el Arrays.deepHashCode y Arrays.deepEquals métodos en una serie de casos en los que anteriormente preferiría incorrectamente el estándar Arrays.hashCode y Arrays.equals alternativas.


0
2017-08-09 20:27