Подтвердить что ты не робот

Как научить eclipse генерировать компактные equals() и hashCode() из класса jdk 7 Objects?

Несколько дней назад мы перешли на Java 7 в мою компанию - наконец! Jay\o/Итак, я узнал о классе Objects и был удивлен, как были реализованы методы hashCode() и equals(), что уменьшило количество кода boylerplate по сравнению с теми, которые были созданы eclipse по умолчанию (ALT + SHIFT + S → H).

Мне было интересно, могу ли я изменить поведение по умолчанию генерируемого eclipse hashCode() и equals()?

Мне бы хотелось увидеть это:

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

вместо этого:

@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;
}

То же самое относится к equals(). Это статья Я получил это от.

Любые идеи, как реализовать это лучше всего?

4b9b3361

Ответ 1

В настройках Eclipse перейдите в Java > Редактоp > Шаблоны.

Здесь вы можете создать новый шаблон. Шаблон может выглядеть так:

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

Я не уверен, есть ли переменная, которая будет правильно перечислять ваши поля.

Возможно, вы захотите посмотреть дополнительные пояснения к этим шаблонам

Ответ 2

Существует новый доступный плагин, который может генерировать методы toString(), hashCode(), equals() с использованием функций java 7, библиотеки apache common lang, библиотеки guava. Он имеет хорошие настраиваемые функции. Пожалуйста, найдите ссылку ниже, чтобы установить плагин. После установки просто щелкните правой кнопкой мыши → Jenerate → различные параметры

Ссылка - https://marketplace.eclipse.org/content/jenerate