IntelliJ IDEA 2020.3 ヘルプ

コードの生成

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

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

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

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

コンストラクターを生成

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

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

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

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

  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() メソッドに追加するのを忘れた場合このインスペクションの重大度を変更するを使用して、エラーを警告として表示します。これにより、エディター内の未使用のフィールドがハイライトされ、スクロールバーに黄色のマーカーとしてその位置が示されます。

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

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

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

コードインスペクション

IntelliJ IDEA には、コンパイル前にプロジェクト内の異常コードを検出して修正する一連のコードインスペクションがあります。IDE はさまざまな問題を見つけてハイライトし、デッドコードを見つけ、可能性のあるバグを見つけ、スペルの問題、コード構造全体を改善することができます。インスペクションは...

インスペクションの重大度の構成

インスペクションの重大度は、検出されたコードの問題がプロジェクトにどれほど深刻な影響を及ぼすかを示します。すべての重要度レベルには、独自のハイライトスタイルがあります。IntelliJ IDEA には、事前定義された重大度レベルのセットがあります。エラー:構文エラーをマークします。警告:バグを生成し...

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

IntelliJ IDEA は、多くの一般的なコード構造用に事前定義された多数のライブテンプレートを提供します。ワークフローに固有のユースケースをカバーするカスタムテンプレートを定義することもできます。ライブテンプレートを挿入するテンプレートを展開する場所にキャレットを置きます。テンプレートの省略形...