IntelliJ IDEA 2020.2ヘルプ

コードの生成

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() が宣言されているかどうか。
最終更新日: 2020年9月14日

関連ページ:

ファイル・テンプレート

ファイルテンプレートは、新しいファイルを作成するときに生成されるデフォルトのコンテンツの仕様です。作成しているファイルのタイプに応じて、テンプレートは、そのタイプのすべてのファイル(業界標準、企業ポリシー、またはその他の理由による)に含まれると予想される初期コードとフォーマットを提供します。Inte...

コード補完

このセクションでは、コーディングプロセスのスピードアップを可能にするコンテキスト対応コード補完のさまざまなテクニックについて説明します。基本補完:基本コード補完は、可視性スコープ内のクラス、メソッド、フィールド、およびキーワードの名前を完成させるのに役立ちます。コード補完を呼び出すと、Intelli...

Emmet

Emmetツールキットは、HTML、CSS、およびJSXを使用してコーディングを拡張します。IntelliJ IDEAを移動せずにEmmetコードテンプレートを使用できます。テンプレートを正しいマークアップに展開するには、その省略形を入力して を押します。ショートカットの変更については、略語拡張キー...

コード・スタイル: Java

macOSのIntelliJ IDEA | 環境設定 | エディター | コード・スタイル | Javaこのページを使用して、Javaファイルのフォーマットオプションを設定します。これらの設定を変更すると、プレビューペインに、コードへの影響が表示されます。タブとインデントタブ文字を使用このチェックボ...

コード・インスペクション

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

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

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