コードの生成
IntelliJ IDEA は、共通のコード構造と繰り返し要素を生成する複数の方法を提供し、生産性の向上に役立ちます。 これらは、新しいファイルの作成時に使用される ファイルテンプレート 、コンテキストに基づいて異なる方法で適用されるカスタムまたは定義済みの ライブテンプレート 、さまざまなラッパー、文字の自動ペアリングのいずれかです。
さらに、IntelliJ IDEA は コード補完および Emmet のサポートを提供します。
コンストラクターを生成
IntelliJ IDEA は、対応する引数の値を使用して特定のクラスフィールドを初期化するコンストラクターを生成できます。
クラスのコンストラクターを生成する
メインメニューで、 コード に移動し、 生成 (Alt+Insert) を選択します。
生成 ポップアップで、 コンストラクターについて をクリックします。
クラスにフィールドが含まれている場合は、コンストラクターで初期化するフィールドを選択し、 OK をクリックします。
次のコードは、クラスのコンストラクターを生成した結果を示しています。
委譲メソッドを生成
IntelliJ IDEA はあなたのクラスのフィールドやメソッドに振る舞いを委譲するメソッドを生成することができます。 このアプローチにより、フィールドまたはメソッドを直接公開せずにフィールドまたはメソッドのデータにアクセスできるようになります。
クラス用の委譲メソッドを生成する
メインメニューで、 コード に移動し、 生成 (Alt+Insert) を選択します。
生成 ポップアップで、 メソッドの委譲 をクリックします。
ターゲットフィールドまたはメソッドを選択し、 OK をクリックします。
委譲するメソッドを選択し、 OK をクリックします。
次のコードは、 Calendar クラスの get(i) メソッドを別のクラスに委譲した結果を示しています。
equals() と hashCode() メソッドを生成する
Java スーパークラス java.lang.Object は、オブジェクトを比較するための 2 つのメソッドを提供します。
public boolean equals(Object obj)は、引数として渡されたオブジェクトがこのメソッドが呼び出されたオブジェクトと 等しい場合、trueを返します。 デフォルトでは、これは 2 つのオブジェクトが同じメモリアドレスに格納されることを意味します。public int hashCode()は、このメソッドが呼び出されるオブジェクトのハッシュコード値を返します。 ハッシュコードは、アプリケーションの 1 回の実行中に変更してはなりませんが、実行ごとに変更される場合があります。
クラス用のequals()およびhashCode()を生成
メインメニューで、 コード に移動し、 生成 (Alt+Insert) を選択します。
生成 ポップアップで、 equals() および hashCode() をクリックします。
テンプレート リストから速度テンプレートを選択します。
をクリックして テンプレートダイアログを開くこともでき、そこで既存のテンプレートを選択するか、 カスタムテンプレートを作成できます。
メソッド内で生成する式を選択します。 疑問符アイコンの上にマウスを置くと、各式を使用する利点と欠点を説明するツールヒントが開きます。

次へ をクリックします。
等価を決定するために使用するフィールドを選択し、 次へ をクリックします。
ハッシュコード値の計算に使用するフィールドを選択します。 前のステップで選択した項目(等価を判断する項目)からのみ選択できます。 次へ をクリックします。
NULL 以外の値を含むフィールドを選択します。 このオプションの手順は、生成されたコードが null のチェックを回避し、パフォーマンスを向上させるのに役立ちます。 完了 をクリックします。
次のコードは、 equals() および hashCode() メソッドをオーバーライドした結果を示しています。
getter と setter の生成
IntelliJ IDEA は、クラス内のフィールド用のアクセサーおよびミューテーターメソッド(getter および setter )を生成できます。 生成されたメソッドには、JavaBeans API で必要な引数が 1 つしかありません。
getter と setter のメソッド名は、 コード生成の命名設定に従って IntelliJ IDEA によって生成されます。
メインメニューで、 コード に移動し、 生成 (Alt+Insert) を選択します。
生成 ポップアップで、次のいずれかをクリックします。
クラスフィールドの現在の値を取得するためのアクセサーメソッドを生成する Getter。
クラスフィールドの値を設定するためのミューテーターメソッドを生成する Setter。
Getter と Setter を使用してアクセサーメソッドとミューテータメソッドの両方を生成します。
getter または setter を生成するフィールドを選択し、 OK をクリックします。
をクリックして Getter/Setter テンプレートダイアログにアクセスすることで、 カスタム getter または setter メソッドを追加できます。 フィールドがリストにない場合は、対応する getter メソッドと setter メソッドがすでに定義されています。
すべてのアノテーションをコピー オプションを選択すると、フィールドから適用可能なすべてのアノテーションが新しいメソッドまたは新しいメソッドのパラメーターにコピーされます。 それ以外の場合は、適用可能な null 可能性アノテーションのみがコピーされます。
次のコードは、1 つのフィールド var を持つクラスの getter および setter メソッドを生成した結果を示しています。
toString() の生成
Javaのスーパークラス java.lang.Object の toString() メソッドは、オブジェクトの文字列表現を返します。 このメソッドを使用して、たとえばコードの実行を迅速に監視するために標準出力に任意のオブジェクトを出力できます。 デフォルトでは、 toString() はクラス名に続いてオブジェクトのハッシュコードを返します。 オーバーライドして、たとえばオブジェクトのフィールドの値を返すようにすると、ニーズに合わせたより有益な情報が提供される可能性があります。
クラスのtoString()メソッドをオーバーライド
コード メニューで、 生成 Alt+Insert をクリックします。
生成 ポップアップで、 toString() をクリックします。
以下を設定します。
テンプレート リストから
toString()メソッドを生成するためのテンプレートを選択します。生成された
toString()メソッドで返すフィールドを選択します。 複数のメンバーを選択するには、 Shift を押し続けます。 デフォルトでは、使用可能なすべてのフィールドが選択されています。 選択なし をクリックして、クラス名のみを返すtoString()メソッドを生成します。必要に応じて @Override を挿入する チェックボックスを選択してください。
設定 ボタンをクリックして、 toString() 生成設定ダイアログを開きます。 ここで、動作を調整し、 カスタムテンプレートを追加できます。
OK をクリックします。
クラスにデフォルトで toString() メソッドがすでに定義されている場合は、続行する前にこのメソッドを削除するかどうかの確認が表示されます。 この動作は、 toString() 生成設定 ダイアログの メソッドがすでに存在する場合 オプショングループを使用して変更できます。既存のメソッドを自動で置き換えるか、重複するメソッドを生成するかを選択できます。
次のコードは、いくつかのフィールドが定義されたクラスの toString() メソッドの生成結果を示しています。
次の コードインスペクションは、 toString() メソッドに関連しています。
'toString()' メソッドをオーバーライドしていないクラス は、
toString()メソッドが定義されていないクラスを識別するために使用できます。 このインスペクションは、 除外設定を使用して、ダンプすることになっていないフィールドを持つクラスを無視します。 追加の設定は、クラス名に一致する正規表現を使用して特定のクラスを除外することです。 デフォルトでは、これは例外クラスを除外するために使用されます。'toString()' メソッドで使用されていないフィールド は、
toString()メソッドにダンプされていないフィールドを識別するために使用できます。 たとえば、クラスに新しいフィールドを追加したが、それらをtoString()メソッドに追加するのを忘れた場合。 このインスペクションの重大度を変更して、エラーを警告として表示します。 これにより、エディターで使用されていないフィールドがハイライトされ、スクロールバーにその位置が黄色のマーカーで示されます。
カスタムコード生成テンプレート
getter と setter、および equals()、 hashCode()、 toString() メソッドの生成に使用されるテンプレートは、 Velocity テンプレート言語(英語)で記述されています。 事前定義されたテンプレートを変更することはできませんが、独自のカスタムテンプレートを追加して、必要な動作を実装することができます。
IntelliJ IDEA は Velocity テンプレート用に以下の変数を提供します。
getter と setter を生成するためのテンプレートでは、次の変数を使用できます。
変数 | 説明 |
|---|---|
| 現在の Java ランタイム環境(JRE)のバージョン。 |
| 現在のクラス。 |
| さまざまなコード生成ヘルパーメソッドへのアクセスを提供します。 |
| 現在のコードスタイルに従って名前をフォーマットする機能を提供します。 |
| getter または setter が生成されるフィールド。 |
toString() メソッドを生成するためのテンプレートでは、次の変数を使用できます。
変数 | 説明 |
|---|---|
| 現在の Java ランタイム環境(JRE)のバージョン。 |
| 現在のクラス。 |
| さまざまなコード生成ヘルパーメソッドへのアクセスを提供します。 |
| 現在のコードスタイルに従って名前をフォーマットする機能を提供します。 |
| 現在のクラスのフィールドのリスト。 |
equals() メソッドを生成するためのテンプレートでは、次の変数を使用できます。
変数 | 説明 |
|---|---|
| 現在の Java ランタイム環境(JRE)のバージョン。 |
| 現在のクラス。 |
| さまざまなコード生成ヘルパーメソッドへのアクセスを提供します。 |
| 現在のコードスタイルに従って名前をフォーマットする機能を提供します。 |
| 現在のクラスのフィールドのリスト。 |
|
|
|
|
| 該当する場合、スーパークラスの |
| ウィザードから渡されたオプション。 |
| スーパークラスに |
hashCode() メソッドを生成するためのテンプレートでは、次の変数を使用できます。
変数 | 説明 |
|---|---|
| 現在の Java ランタイム環境(JRE)のバージョン。 |
| 現在のクラス。 |
| さまざまなコード生成ヘルパーメソッドへのアクセスを提供します。 |
| 現在のコードスタイルに従って名前をフォーマットする機能を提供します。 |
| 現在のクラスのフィールドのリスト。 |
| スーパークラスに |
生産性のヒント
コード補完を使う
現在のコンテキストに応じて、IntelliJ IDEA は、コード補完ポップアップで関連するコード構造を生成することを提案できます。 例: キャレットが Java クラス内にある場合、補完ポップアップには、getter、setter、 equals()、 hashCode()、 toString() メソッドを追加するための提案が含まれます。
