Question

Je crois que je l'ai lu quelque part les gens générant equals / hashcode / toString pendant la compilation (en utilisant APT) en identifiant les champs doivent faire partie du test de hachage / d'égalité. Je ne pouvais pas trouver quelque chose comme ça sur le web (je pourrais avoir rêvé?) ...

Cela pourrait se faire comme ça:

public class Person {
  @Id @GeneratedValue private Integer id;

  @Identity private String firstName, lastName;
  @Identity private Date dateOfBirth;

  //...
}

Pour une entité (si nous voulons certains champs à exclure Effectuer, comme l'id).

Ou comme une classe de cas scala i.e. un objet de valeur:

@ValueObject
public class Color {
  private int red, green, blue;
}

Non seulement le fichier devient plus lisible et plus facile à écrire, mais il contribue également à faire en sorte que tous les attributs font partie des Egaux / hashcode (dans le cas où vous ajoutez un autre attribut plus tard, sans mettre à jour les méthodes en conséquence).

J'ai entendu APT est pas très bien pris en charge dans l'IDE, mais je ne voudrais pas voir que comme un problème majeur. Après tout, les tests sont gérés principalement par des serveurs d'intégration continue.

Toute idée si cela a déjà été fait et si non pourquoi? Merci

Était-ce utile?

La solution

J'utilise Projet Lombok pour cela.

Autres conseils

Alors que Pojomatic ne fait pas la compilation de manipulation de bytecode, il ne supporte facilement création d'égal à égal, les méthodes hashCode et toString, utiliser des annotations pour personnaliser leur comportement.

solution de Google dans la bibliothèque AutoValue: https://github.com/google/auto/ arbre / maître / valeur utilise la génération d'annotation @AutoValue de + de sources avant la compilation.

Plusieurs solutions concurrentes sont abordées dans la présentation suivante: https: // docs. google.com/presentation/d/14u_h-lMn7f1rXE1nDiLX0azS3IkgjGl5uxp5jGJ75RE/edit

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top