我重写了一个对象的hashCode和equals方法。我使用Apache Commons库中的EqualsBuilder来覆盖equals。自从我使用Java 7以来,我打算使用内置的hash method in the Objects class而不是Apache Commons HashCodeBuilder。这种方法有什么问题吗?有没有什么理由比另一个更喜欢一个?是否有任何理由使用Apache HashCodeBuilder而不是Objects.hash?
2
A
回答
2
HashCodeBuilder
具有时髦的反射哈希代码实现,但除此之外,不 - 你应该使用Objects
。
2
一个区别是,HashCodeBuilder
可以计算反思的哈希代码:
public int hashCode() {
return HashCodeBuilder.reflectionHashCode(this);
}
也就是说,使用HashCodeBuilder
,你不必列出各个领域,虽然可以。
相关问题
- 1. C++:是否有任何理由使用uint64_t,而不是size_t
- 2. 是否有任何理由使用SGML而不是XML?
- 3. 是否有任何理由使用[:over @:?
- 4. 是否有任何理由使用isset()?
- 5. 是否有任何理由使用System.Uri?
- 6. 是否有任何理由使用RabbitMQ而非Kafka?
- 7. 是否有任何理由使用按钮元素而不是span元素?
- 8. 是否有任何充分的理由使用Json而不是obj for Three.js
- 9. 是否有任何理由在C++ 1z中使用std :: map :: emplace()而不是try_emplace()?
- 10. 是否有任何理由使用这个Regex方法而不是String.IsNullOrEmpty()?
- 11. 是否有任何理由使用CSS阴影而不是阴影?
- 12. 是否有任何理由使用一个DataContext实例,而不是几个?
- 13. 是否有理由总是使用对象而不是基元?
- 14. 是否有理由不使用Pressflow而不是Drupal 6?
- 15. 是否有理由使用vanilla Pure Data而不是Pd-Extended?
- 16. 是否有理由使用$ scope。$ apply而不是$ applyAsync?
- 17. 是否有理由使用常量而不是消息?
- 18. 是否有充分的理由使用CassiniDev而不是VS WebServer?
- 19. 是否有理由在布尔值上使用&=而不是= =?
- 20. 是否有任何理由不使用INLINABLE pragma作为函数?
- 21. 是否有任何理由不使用Boost :: shared_ptrs?
- 22. 是否有任何理由不使用resource.getInputStream()?
- 23. 是否有任何理由Object.freeze函数?
- 24. 是否有任何理由选择开始学习Winforms而不是WPF?
- 25. 是否有任何理由选择迭代算法而不是递归算法
- 26. 是否有任何理由在C#中使用私有属性?
- 27. 是否有任何理由不总是使用AtomicInteger作为数据成员?
- 28. 是否有任何理由不使用src =“// domain.com/file.js”,协议是动态的?
- 29. 使用compose()而不是lambda表达式的任何理由?
- 30. Java - 是否有任何理由检查单例是否为空?
小心反射。它可能会导致严重的性能问题... –