Ond*_*žka 18 java equals hashcode
实现equals()
和hashCode()
简单的数据POJO使我的代码混乱,维护繁琐.
有哪些库自动处理?
由于性能原因,我更喜欢字节码检测而不是AOP方法.
更新:已经讨论了实现equals()和hashCode()的必要性的主题,这是我的观点:
以最小的努力提前完成它而不是挖掘代码,添加hC/eq是不是更好?
jos*_*chi 13
龙目岛项目提供了注解@EqualsAndHashCode将产生equals()
和hashCode()
你的Java类.当然,与手动实现这些方法相比,存在一些缺点,因此请务必阅读链接页面上的"小字体".
Objects.hashCode
&Objects.hash
虽然不是您要求的灵丹妙药,但写下hashCode
但从 Java 7 及更高版本开始,编写重写变得更容易了。
从Java 7开始,Objects
提供了一些用于生成哈希码值的实用方法。
看我的回答对相关问题的回答。
\nhashCode
( 和equals
) 覆盖基于类中的单个成员,请使用Objects.hashCode( member )
。hashCode
(和equals
)覆盖基于您的类的多个属性,请使用Objects.hash( memberA , memberB , memberC )
。@Override\npublic int hashCode() {\n return this.member.hashCode() ; // Throws NullPointerException if member variable is null.\n}\n
Run Code Online (Sandbox Code Playgroud)\n@Override\npublic int hashCode() {\n return Objects.hashCode( this.member ) ; // Returns zero (0) if `this.member` is NULL, rather than throwing exception.\n}\n
Run Code Online (Sandbox Code Playgroud)\n@Override\npublic int hashCode() {\n return Objects.hash( this.memberA , this.memberB , this.memberC ) ; // Hashes the result of all the passed objects\xe2\x80\x99 individual hash codes. \n}\n
Run Code Online (Sandbox Code Playgroud)\n对于自动生成hashCode
和equals
使用记录,如我的其他答案中所述中所述。
归档时间: |
|
查看次数: |
10283 次 |
最近记录: |