是否有必要在DTO中覆盖equals和hashcode方法?因为DTO只用于传输数据。有没有关于此的最佳做法或事情?
感谢。
答案 0 :(得分:14)
This article提供了一条建议:
放置在List,Set或Map中的对象(作为键或值)应该具有相应的equals定义。
当然DTO不仅仅用于传输,我们会保留它们,对它们进行排序,缓存它们......
在实践中,人们提供equals和hash吗?不是不总是。我们应该吗?我想是的。
答案 1 :(得分:4)
您是否需要为DTO课程提供equals
和hashcode
实施取决于您如何使用它们。
如果将它们与一个或多个集合一起使用,则应提供适当方法的实现。几乎所有集合都会对它们存储的对象调用equals
。基于哈希表的集合(如HashSet
和HashMap
会调用hashcode
,而已排序的集合(如TreeSet
和TreeMap
调用compareTo
方法除了{{{ 1}}。
答案 2 :(得分:0)
如果它变得太微不足道,我可以推荐使用lombok注释 http://projectlombok.org/features/