41

数日前、社内で Java 7 に切り替えました - ついに!Jay \o/ そこで私はこのクラスについて知り、Objectsメソッドがいかに短く実現されているかに驚き、デフォルトで Eclipse によって生成されたものと比較してボイラープレート コードの多くを削減しました (ALT+SHIFT+S --> H)。hashCode()equals()

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()これは私がこれを手に入れた記事です。

これを最もよく実現する方法はありますか?

4

3 に答える 3

4

Eclipse 設定で、Java > Editor > Templates に移動します。

そこで新しいテンプレートを作成できます。パターンは次のようになります。

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

ただし、フィールドを適切に列挙する変数があるかどうかはわかりません。

これらのテンプレートに関する詳細な説明を参照してください。

于 2013-07-22T07:27:42.100 に答える
3

Java 7 機能、apache common lang ライブラリ、guava ライブラリを使用して toString()、hashCode()、equals() メソッドを生成できる新しいプラグインが利用可能になりました。カスタマイズ可能な優れた機能があります。プラグインをインストールするには、以下のリンクを見つけてください。インストール後、右クリック -> Jenerate -> 別のオプション

リンク - https://marketplace.eclipse.org/content/jenerate

于 2016-07-08T18:59:30.603 に答える