IntelliJ IDEA 2021.1 ヘルプ

コードの生成

IntelliJ IDEA は、一般的なコード構造と繰り返し要素を生成するための複数の方法を提供し、生産性の向上に役立ちます。これらは、新しいファイルを作成するときに使用されるファイルテンプレート、コンテキスト、さまざまなラッパー、または文字の自動ペアリングに基づいて異なる方法で適用されるカスタムまたは定義済みのライブテンプレートのいずれかです。

さらに、IntelliJ IDEA はコード補完および Emmet サポートを提供します。

このトピックでは、Java 固有の標準コード構成(コンストラクター、メソッドのオーバーライドと実装、getter と setter など)を生成する方法について説明します。メインメニューからコード | 生成 Alt+Insert を選択して、生成可能な使用可能な構成を含むポップアップメニューを開きます。

これは、IntelliJ IDEA でさまざまなコード構成を生成する方法を示すビデオです。

コンストラクターを生成

IntelliJ IDEA は、対応する引数の値を使用して特定のクラスフィールドを初期化するコンストラクターを生成できます。

クラスのコンストラクターを生成する

  1. コードメニューで、生成 Alt+Insert をクリックします。

  2. 生成ポップアップで、Kotlin のコンストラクターをクリックします。

  3. クラスにフィールドが含まれている場合は、コンストラクターで初期化するフィールドを選択し、OK をクリックします。

次のコードは、クラスのコンストラクターを生成した結果を示しています。

public class MyClass { int aInteger; double bDouble; public MyClass(int myAIntegerParam, double myBDoubleParam) { aInteger = myAIntegerParam; bDouble = myBDoubleParam; } }

委譲メソッドを生成する

IntelliJ IDEA はあなたのクラスのフィールドやメソッドに振る舞いを委譲するメソッドを生成することができます。このアプローチにより、フィールドまたはメソッドを直接公開せずにフィールドまたはメソッドのデータにアクセスできるようになります。

クラス用の委譲メソッドを生成する

  1. コードメニューで、生成 Alt+Insert をクリックします。

  2. 生成ポップアップで、メソッドの委譲をクリックします。

  3. ターゲットフィールドまたはメソッドを選択し、OK をクリックします。

  4. 委譲するメソッドを選択し、OK をクリックします。

次のコードは、Calendar クラスの get(i) メソッドを別のクラスに委譲した結果を示しています。

Calendar calendar; public int get(int i) { return calendar.get(i); }

equals() と hashCode() メソッドを生成する

Java スーパークラス java.lang.Object は、オブジェクトを比較するための 2 つのメソッドを提供します。

  • public boolean equals(Object obj) は、引数として渡されたオブジェクトがこのメソッドが呼び出されたオブジェクトと等しい場合、true を返します。デフォルトでは、これは 2 つのオブジェクトが同じメモリアドレスに格納されることを意味します。

  • public int hashCode() は、このメソッドが呼び出されるオブジェクトのハッシュコード値を返します。ハッシュコードは、アプリケーションの 1 回の実行中に変更してはなりませんが、実行ごとに変更される場合があります。

クラス用に equals() と hashCode() を生成する

  1. コードメニューから、生成 Alt+Insert をクリックします。

  2. 生成ポップアップで、equals() および hashCode() をクリックします。

  3. テンプレートリストから速度テンプレートを選択します。

    Template settings をクリックしてテンプレートダイアログを開くこともできます。このダイアログでは、既存のテンプレートを選択するか、カスタムテンプレートを作成できます。

  4. サブクラスを受け入れ、コード生成中に getter を使用する場合は、チェックボックスを選択します。

  5. 次へをクリックします。

  6. 等価を決定するために使用するフィールドを選択し、次へをクリックします。

  7. ハッシュコード値の計算に使用するフィールドを選択します。前のステップで選択した項目(等価を判断する項目)からのみ選択できます。次へをクリックします。

  8. NULL 以外の値を含むフィールドを選択します。このオプションの手順は、生成されたコードが null のチェックを回避し、パフォーマンスを向上させるのに役立ちます。完了をクリックします。

次のコードは、equals() および hashCode() メソッドをオーバーライドした結果を示しています。

public boolean equals(Object o){ if(this==o)return true; if(o==null||getClass()!=o.getClass())return false; FixedRateCurrencyExchangeService that=(FixedRateCurrencyExchangeService)o; if(Double.compare(that.rate,rate)!=0)return false; return true; } public int hashCode(){ long temp=rate!=+0.0d?Double.doubleToLongBits(rate):0L; return int(temp^(temp>>>32)); }

getter および setter の生成

IntelliJ IDEA は、クラス内のフィールド用のアクセサーおよびミューテーターメソッド( getter および setter)を生成できます。生成されたメソッドには、JavaBeans API で必要な引数が 1 つしかありません。

getter と setter のメソッド名は、コード生成の命名設定に従って IntelliJ IDEA によって生成されます。

  1. コードメニューで、生成 Alt+Insert をクリックします。

  2. 生成ポップアップで、次のいずれかをクリックします。

    • クラスフィールドの現在の値を取得するためのアクセサーメソッドを生成する Getter

    • クラスフィールドの値を設定するためのミューテーターメソッドを生成する Setter

    • getter と setter を使用してアクセサーメソッドとミューテータメソッドの両方を生成します。

  3. getter または setter を生成するフィールドを選択し、OK をクリックします。

    the Browse button をクリックして Getter/Setter テンプレートダイアログにアクセスすることで、カスタム getter または setter メソッドを追加できます。フィールドがリストにない場合は、対応する getter メソッドと setter メソッドがすでに定義されています。

次のコードは、1 つのフィールド var を持つクラスの getter および setter メソッドを生成した結果を示しています。

public class MyClass { int field; public int getField() { return field; } public void setField(int field) { this.field = field; } }

PHP の注意

PHP コンテキストでは、getter および setter は PHP Getter/Setter/Fluent setter ファイルテンプレートを使用して生成されます。デフォルトでは、これらのテンプレートで指定されているように、setter は set プレフィックスで生成され、getter は推論されたプロパティ型 boolean または non-boolean に従って is または get プレフィックスで生成されます。プレフィックスは、デフォルトの getter テンプレートの ${GET_OR_IS} 変数の値です。テンプレートはファイルおよびコードテンプレートコードタブで設定されます。

toString() の生成

Java スーパークラス java.lang.ObjecttoString() メソッドは、オブジェクトの文字列表現を返します。このメソッドは、コードの実行を迅速に監視するなど、任意のオブジェクトを標準出力に出力するために使用できます。デフォルトでは、toString() はクラスの名前とそれに続くオブジェクトのハッシュコードを返します。たとえば、オブジェクトのフィールドの値を返すようにオーバーライドすることができます。これは、ニーズにより役立つ場合があります。

クラスの toString() メソッドをオーバーライドする

  1. コードメニューで、生成 Alt+Insert をクリックします。

  2. 生成ポップアップで、toString() をクリックします。

  3. 以下を設定します。

    • テンプレートリストから toString() メソッドを生成するためのテンプレートを選択します。

    • 生成された toString() メソッドで返すフィールドを選択します。デフォルトでは、使用可能なすべてのフィールドが選択されています。選択なしをクリックして、クラス名のみを返す toString() メソッドを生成します。

    • 必要に応じて @Override を挿入するチェックボックスを選択してください。

    • 設定ボタンをクリックして、toString() 生成設定ダイアログを開きます。ここで、動作を調整し、カスタムテンプレートを追加できます

  4. OK をクリックします。

toString() メソッドがクラスですでに定義されている場合、デフォルトでは、続行する前にこのメソッドを削除するかどうかを尋ねられます。toString() 生成設定ダイアログのメソッドがすでに存在する場合オプショングループを使用して、この動作を変更できます。既存のメソッドを自動的に置き換えるか、複製メソッドを生成します。

次のコードは、いくつかのフィールドが定義されたクラスの toString() メソッドの生成結果を示しています。

public class MyClass { private String name; private String url; private int port; private String[] validIPs; ... public String toString() { return "MyClass{" + "name='" + name + '\'' + ", url='" + url + '\'' + ", port=" + port + ", validIps=" + Arrays.toString(validIps) + '}'; } ... }

次のコードインスペクションtoString() メソッドに関連しています。

  • ''toString()'' メソッドをオーバーライドしていないクラスは、toString() メソッドが定義されていないクラスを識別するために使用できます。このインスペクションは、除外設定を使用して、ダンプすることになっていないフィールドを持つクラスを無視します。追加の設定は、クラス名に一致する正規表現を使用して特定のクラスを除外することです。デフォルトでは、これは例外クラスを除外するために使用されます。

  • ''toString()'' メソッドで使用されていないフィールドは、toString() メソッドにダンプされていないフィールドを識別するために使用できます。例: クラスに新しいフィールドを追加したが、toString() メソッドに追加するのを忘れた場合このインスペクションの重大度を変更するを使用して、エラーを警告として表示します。これにより、エディター内の未使用のフィールドがハイライトされ、スクロールバーに黄色のマーカーとしてその位置が示されます。

カスタムコード生成テンプレート

getter と setter、および equals()hashCode()toString() メソッドの生成に使用されるテンプレートは、Velocity テンプレート言語(英語)で記述されています。事前定義されたテンプレートを変更することはできませんが、独自のカスタムテンプレートを追加して、必要な動作を実装することができます。

IntelliJ IDEA は Velocity テンプレート用に以下の変数を提供します。

getter と setter を生成するためのテンプレートでは、次の変数を使用できます。

変数 説明
$java_version 現在の Java ランタイム環境(JRE)のバージョン。
$class 現在のクラス。
$helper さまざまなコード生成ヘルパーメソッドへのアクセスを提供します。
$settings 現在のコードスタイルに従って名前をフォーマットする機能を提供します。
$fieldgetter または setter が生成されるフィールド。

toString() メソッドを生成するためのテンプレートでは、次の変数を使用できます。

変数 説明
$java_version 現在の Java ランタイム環境(JRE)のバージョン。
$class 現在のクラス。
$helper さまざまなコード生成ヘルパーメソッドへのアクセスを提供します。
$settings 現在のコードスタイルに従って名前をフォーマットする機能を提供します。
$fields 現在のクラスのフィールドのリスト。

equals() メソッドを生成するためのテンプレートでは、次の変数を使用できます。

変数 説明
$java_version 現在の Java ランタイム環境(JRE)のバージョン。
$class 現在のクラス。
$helper さまざまなコード生成ヘルパーメソッドへのアクセスを提供します。
$settings 現在のコードスタイルに従って名前をフォーマットする機能を提供します。
$fields 現在のクラスのフィールドのリスト。
$instanceBaseName equals() メソッドが呼び出されるオブジェクトの事前定義済みの名前。
$baseParamName equals() メソッドパラメーターの事前定義済みの名前。
$superParamName 該当する場合、スーパークラスの equals() メソッド内のパラメーターの名前。
$checkParameterWithInstanceof ウィザードから渡されたオプション。
$superHasEquals スーパークラスに equals() が宣言されているかどうか。

hashCode() メソッドを生成するためのテンプレートでは、次の変数を使用できます。

変数 説明
$java_version 現在の Java ランタイム環境(JRE)のバージョン。
$class 現在のクラス。
$helper さまざまなコード生成ヘルパーメソッドへのアクセスを提供します。
$settings 現在のコードスタイルに従って名前をフォーマットする機能を提供します。
$fields 現在のクラスのフィールドのリスト。
$superHasHashCode スーパークラスに hashCode() が宣言されているかどうか。

生産性のヒント

コード補完を使う

現在のコンテキストに応じて、IntelliJ IDEA は、コード補完ポップアップで関連するコード構造を生成することを提案できます。例: キャレットが Java クラス内にある場合、補完ポップアップには、getter、setter、equals()hashCode()toString() メソッドを追加するための提案が含まれます。

Generate getters and toString() in the completion popup

    関連ページ:

    ファイルテンプレート | IntelliJ IDEA

    ファイルテンプレートは、作成する新しいファイルのデフォルトコンテンツの仕様です。作成するファイルのタイプに応じて、テンプレートは、そのタイプのすべてのファイルで期待される初期コードとフォーマットを提供します(業界または言語の標準、企業ポリシー、またはその他の理由による)。例: これは、定型コード、作成者に関するメタ情報などです。IntelliJ IDEA は、新しいファイルを作成するときに提案される、サポートされているすべてのファイルタイプの定義済みテンプレートを提供します。推奨されるファイルタ...

    ライブテンプレート | IntelliJ IDEA

    ライブテンプレートを使用して、ループ、条件、さまざまな宣言、出力ステートメントなどの一般的な構成をコードに挿入します。コードスニペットを展開するには、対応するテンプレートの省略形を入力してを押します。を押し続けると、テンプレート内の 1 つの変数から次の変数にジャンプします。を押して、前の変数に移動します。ライブテンプレートの種類:次のタイプのライブテンプレートが区別されます。シンプルなテンプレートには固定プレーンテキストのみが含まれています。シンプルなテンプレートを展開すると、テキスト

    コード補完 | IntelliJ IDEA

    このセクションでは、コーディングプロセスのスピードアップを可能にするコンテキスト対応コード補完のさまざまなテクニックについて説明します。基本補完:基本コード補完は、可視性スコープ内のクラス、メソッド、フィールド、キーワードの名前を完成させるのに役立ちます。コード補完を呼び出すと、IntelliJ IDEA はコンテキストを分析し、現在のキャレット位置から到達可能な選択肢を提案します(提案にはライブテンプレートも含まれます)。基本コード補完がフィールド、パラメーター、または変数宣言の一部に適用さ...

    コードインスペクション | IntelliJ IDEA

    IntelliJ IDEA には、コンパイル前にプロジェクト内の異常コードを検出して修正する一連のコードインスペクションがあります。IDE はさまざまな問題を見つけてハイライトし、デッドコードを見つけ、可能性のあるバグを見つけ、スペルの問題、コード構造全体を改善することができます。インスペクションは、すべてのプロジェクトファイル内のコード、または特定のスコープ内のみ(たとえば、本番コード内、または変更されたファイル内)のコードをスキャンできます。すべてのインスペクションには、問題がコードに影響を...

    インスペクションの重大度を変更する | IntelliJ IDEA

    インスペクションの重大度は、検出されたコードの問題がプロジェクトにどれほど深刻な影響を及ぼすかを示します。すべての重要度レベルには、独自のハイライトスタイルがあります。IntelliJ IDEA には、事前定義された重大度レベルのセットがあります。エラー: 構文エラーをマークします。警告: バグを生成したり、機能拡張を必要とする可能性のあるコードフラグメントをマークします。弱い警告: 改善または最適化できるコードフラグメントをマークします(冗長コード、重複したコードフラグメントなど)。サーバーの...

    ライブテンプレートを使用してカスタムコード構成を生成する | IntelliJ IDEA

    IntelliJ IDEA は、多くの一般的なコード構造用に事前定義された多数のライブテンプレートを提供します。ワークフローに固有のユースケースをカバーするカスタムテンプレートを定義することもできます。ライブテンプレートを挿入するテンプレートを展開する場所にキャレットを置きます。テンプレートの省略形を入力し、呼び出しキーを押します(通常はデフォルトで)。または、メニューでをクリックして候補リストを開き、必要なテンプレートを選択します。選択されたテンプレートがユーザー入力を必要とする場合、対応