Как научить 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()
. Это статья Я получил это от.
Любые идеи, как реализовать это лучше всего?
Ответы
Ответ 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