2010-03-29 82 views
8

我相信我通過識別哪些字段應該是散列/相等性測試的一部分,在編譯期間(使用APT)讀取某處生成equals/hashcode/toString方法的人。我找不到這樣的網絡上的任何東西(我可能是在做夢嗎?)......使用註釋生成等於/ 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中得不到很好的支持,但我不認爲這是一個主要問題。畢竟,測試主要由持續集成服務器運行。

任何想法,如果這已經完成,如果不是爲什麼? 謝謝

回答

2

雖然Pojomatic不做編譯時字節碼操作,但它確實支持簡單創建equals,hashCode和toString方法,使用註釋來定製它們的行爲。

+1

有趣的方法。不知道性能的影響是什麼。 – 2010-05-07 16:46:04