在Java8中有一个类java.util.Objects,它包含hashCode()方法。同时Google 19包含com.google.common.base.Objects,其中也有hashCode()方法。
我的问题:
hashCode()而不是Java的8呢?hashCode(),还是最好还是继续使用番石榴呢?发布于 2016-03-27 19:19:05
番石榴的方法早于‘Java 7’。
同名的Java方法只接受一个参数。但是,同级java.util.Objects.hash()接受可变数量的参数,如番石榴的Objects.hashCode()。
如果使用的是Java 7或更高版本,则可以使用java.util.Objects.hash(...)。番石榴文件注意到这一点:
注意Java7及更高版本:应该将此方法视为不推荐的;使用Objects.hash(java.lang.Object.)而不是。
如果您使用的是Java 6或更早版本,则可以使用Guava的方法。
发布于 2019-10-28 07:42:06
在已接受的答案中添加:
虽然Objects.hash()应该比7+代码中的番石榴更可取,但请注意约书亚·布洛赫的“有效的Java3版”(项目11)中的以下内容(释义):
不幸的是,
Objects.hash()运行得更慢,因为它需要
建议只在性能不重要的情况下使用。
(*)实际上,Objects.hash()只是调用引擎盖下的另一个静态方法:
public static int hash(Object... values) {
return Arrays.hashCode(values);
}你能做什么来对抗这是对任何一个
(但也要记住,过早优化是许多坏处的根源)。
Alternatively:
Code > Generate > equals() and hashCode()中https://stackoverflow.com/questions/36251450
复制相似问题