如何教eclipse从jdk 7 Objects类生成紧凑的equals()和hashCode()?

Auf*_*ind 34 java eclipse equals hashcode

几天前我们在公司内部切换到了Java 7--最后!Jay\o /所以我发现了这个Objects类,并且惊讶于方法的实现有多短,hashCode()并且equals()与默认的eclipse(ALT + SHIFT + S - > H)生成的代码相比减少了许多boylerplate代码.

我在想,如果发生日食的默认行为,我可以改变hashCode()equals()

我很想看到这个:

@Override
public int hashCode()
{
  return Objects.hash(one, two, three, four/*, ...*/);
}
Run Code Online (Sandbox Code Playgroud)

而不是这个:

@Override
public int hashCode()
{
  final int prime = 31;
  int result = 1;
  result = prime * result + ((one == null) ? 0 : one.hashCode());
  result = prime * result + ((two == null) ? 0 : two.hashCode());
  result = prime * result + ((three == null) ? 0 : three.hashCode());
  result = prime * result + ((four== null) ? 0 : four.hashCode());
  // ...
  return result;
}
Run Code Online (Sandbox Code Playgroud)

同样的道理equals().这是我从中得到的这篇文章.

任何想法如何实现这一点最好?

Pyv*_*ves 8

hashCodeequals使用Java 7代Objects班现在已经在Eclipse中实现。早在2018年8月,我就在功能请求424214上进行工作,此后不久我的贡献就合并到了JDT UI代码库中(请参阅commit f543cd6)。

这是Source> Generate hashCode()and equals ...工具中新选项的概述:

生成工具中的新选项

它已于2018年9月在Eclipse 4.9中正式发布。只需下载最新版本的Eclipse(可在此处下载),或通过以下更新站点安装最新的可用软件:http : //download.eclipse.org/releases /最新

除了此新功能,现在还可以更巧妙地处理阵列。在以前不正确地使用标准和替代方法的情况下,该代将使用Arrays.deepHashCodeArrays.deepEquals方法。Arrays.hashCodeArrays.equals