2010-03-29 42 views
8

Tôi tin rằng tôi đọc ở đâu đó mọi người tạo phương thức equals/hashcode/toString trong suốt thời gian biên dịch (sử dụng APT) bằng cách xác định trường nào là một phần của thử nghiệm băm/bình đẳng. Tôi không thể tìm thấy bất cứ điều gì như thế trên web (có thể tôi đã mơ thấy nó?) ...Tạo bằng equals/hashcode/toString bằng cách sử dụng chú thích

Điều đó có thể được thực hiện như thế:

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

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

    //... 
} 

Đối với một thực thể (vì vậy chúng tôi muốn exlude số các trường, như id).

Hoặc như một lớp trường hợp scala tức là một đối tượng giá trị:

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

Không chỉ các tập tin trở nên dễ đọc hơn và dễ dàng hơn để viết, nhưng nó cũng giúp đảm bảo rằng tất cả các thuộc tính là một phần của equals/hashcode (trong trường hợp bạn thêm thuộc tính khác sau này, mà không cập nhật các phương thức phù hợp).

Tôi nghe nói APT không được hỗ trợ rất tốt trong IDE nhưng tôi không thấy đó là vấn đề lớn. Sau khi tất cả, các bài kiểm tra chủ yếu được chạy bởi các máy chủ tích hợp liên tục.

Bất kỳ ý tưởng nào nếu điều này đã được thực hiện và nếu không phải lý do thì sao? Cảm ơn

Trả lời

2

Trong khi Pojomatic không thực hiện thao tác bytecode biên dịch theo thời gian, nó hỗ trợ tạo dễ dàng phương thức equals, hashCode và toString, sử dụng chú thích để tùy chỉnh hành vi của chúng.

+1

Cách tiếp cận thú vị. Tự hỏi tác động của hiệu suất là gì. –

Các vấn đề liên quan