2010-03-29 16 views
8

Creo que he leído en algún lugar personas que generan métodos equals/hashcode/toString durante el tiempo de compilación (usando APT) identificando qué campos deben ser parte de la prueba hash/equality. No pude encontrar nada de eso en la web (que podría haber soñado?) ...Generando equals/hashcode/toString usando la anotación

que se podía hacer así:

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

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

    //... 
} 

Para que una entidad (por lo que queremos exlude algunos campos, como el id).

O como una clase caso Scala, es decir, un objeto de valor:

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

No sólo el archivo se vuelve más legible y más fácil de escribir, pero también ayuda a asegurar que todos los atributos son parte de los Iguales/código hash (en caso de que agregue otro atributo más adelante, sin actualizar los métodos en consecuencia).

Escuché que APT no está muy bien soportado en IDE, pero no lo veo como un problema importante. Después de todo, las pruebas son ejecutadas principalmente por servidores de integración continua.

Alguna idea si esto ya se ha hecho y si no es así por qué? Gracias

Respuesta

2

Mientras que Pojomatic no hace manipulación de bytecode en tiempo de compilación, admite la creación sencilla de métodos equals, hashCode y toString, utilizando anotaciones para personalizar su comportamiento.

+1

enfoque interesante. Me pregunto cuál es el impacto en el rendimiento. –

Cuestiones relacionadas