2010-03-29 3 views
8

나는 해시/동등성 테스트의 일부가되어야하는 필드를 식별함으로써 컴파일 타임 (APT 사용) 동안 equals/hashcode/toString 메소드를 생성하는 어딘가 사람들을 읽었다 고 생각한다. 나는 (? 내가 꿈 수도) 웹에 그런 아무것도 찾을 수 없습니다 그렇게 할 수annotation을 사용하여 equals/hashcode/toString 생성하기

: 엔티티에 대한

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

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

    //... 
} 

는 (그래서 우리는 몇 가지를 exlude 할 id와 같은 필드).

또는 스칼라 케이스 클래스와 같은

는 값 오브젝트를, 즉 :

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

파일은 쓰기보다 읽기 쉽게 될뿐만 아니라, 그러나 그것은 또한 모든 속성이 같음/해시 코드의 일부임을 보장하는 데 도움이 (나중에 다른 속성을 추가하는 경우, 그에 따라 메소드를 업데이트하지 않아도됩니다.)

APT가 IDE에서 잘 지원되지 않는다고 들었지만 중요한 문제로 보지 않을 것입니다. 결국 테스트는 주로 연속 통합 서버에 의해 실행됩니다.

이것이 이미 완료되었는지와 그렇지 않은 경우 어떤 생각입니까? 감사합니다.

답변

16

나는 이것을 위해 Project Lombok을 사용하고 있습니다.

2

Pojomatic은 컴파일 타임 바이트 코드 조작을 수행하지 않지만 주석을 사용하여 해당 동작을 사용자 정의하는 등의 간단한 방법으로 equals, hashCode 및 toString 메소드를 쉽게 작성할 수 있습니다.

+1

흥미로운 접근 방식. 성능에 미치는 영향이 무엇인지 궁금합니다. –

관련 문제