IntelliJ IDEA 2024.1 ヘルプ

シグネチャーの変更

シグネチャーの変更リファクタリングは、メソッドシグネチャーまたはクラスシグネチャーに適用できるいくつかの変更を組み合わせたものです。

class の場合、このリファクタリングにより、クラスをジェネリクスに変換し、その型パラメーターを操作できます。クラスのすべての呼び出し、実装、オーバーライドを自動的に修正します。

メソッドの場合、このリファクタリングは、メソッド名の変更、パラメーターと例外の追加、削除、並べ替え、名前の変更、呼び出しの階層を通じた新しいパラメーターと例外の伝播を行うことができます。

シグネチャーを適切に変更

  1. エディターで、クラスまたはメソッドのパラメーターの追加または編集を開始します。IntelliJ IDEA はガターに the Refactoring icon を表示します。

    In-place change signature refactoring
  2. ガターのアイコンをクリックするか、Alt+Enter を押します。

    新しいパラメーターを追加する場合、IntelliJ IDEA は、パラメーターのデフォルト値を追加し、使用箇所を更新するように要求します。

    Add default value for a parameter

    パラメーターを編集している場合、IntelliJ IDEA は使用箇所の更新を提案します。

    Update usages for parameter
  3. 更新をクリックして提案を適用します。

シグネチャー変更を呼び出すダイアログ

  1. シグネチャーを変更するメソッドまたはクラスを選択します。

  2. コンテキストメニューからリファクタリング | シグネチャーの変更Ctrl+F6)を選択します。

  3. シグネチャーの変更内容に応じて開くダイアログで、適切なオプションを指定してリファクタリングをクリックします。潜在的な変更のプレビューを表示するには、プレビューをクリックします。

クラスシグネチャーの変更の例

型パラメーター Param1, Param2 をクラス MyClass に追加しましょう。

文字列と整数は、それぞれ Param1Param2クラスシグネチャーの変更ダイアログで指定されたデフォルト値です。

また、パラメーターの境界値を追加して、型パラメーターに渡すものにいくつかの制限を加えることもできます。例: Param3 をデフォルト値 List と境界値 Collection で追加する

Change a class signature

public class MyClass { public class MyOtherClass { MyClass myClass; void myMethod(MyClass myClass) { } } }
public class MyClass<Param1, Param2, Param3 extends Collection> { public class MyOtherClass { MyClass<String, Integer> myClass; void myMethod(MyClass<String, Integer, List> myClass) { } } }

メソッドシグネチャーの変更例

メソッドにパラメーターを追加し、メソッドシグネチャーの変更ダイアログでさまざまなオプションを指定して異なる結果を得ることができます。

メソッドに例外を追加することもできます。例外は呼び出し階層に伝播されます。

Change a method signature

パラメーターの追加

名前 price、型 double、デフォルト値 0.0 を持つパラメーターを追加しましょう。

IntelliJ IDEA は、メソッドにパラメーターを追加し、メソッド呼び出しを更新し、デフォルトのパラメーター値を指定します。

public class MyClass { public void myMethod(int value) { } public class MyOtherClass { public void myMethodCall(MyClass myClass) { double d = 0.5; myClass.myMethod(1); } } }
public class MyClass { public void myMethod(int i, double price) { } public class MyOtherClass { public void myMethodCall(MyClass myClass) { double d = 0.5; myClass.myMethod(1, 0.0); } } }

任意の変数を使用

すべてのメソッド呼び出しを更新し、メソッド呼び出しの近くで適切な型の変数を探し、それをメソッドに渡しましょう。これを達成するには、任意の変数を使用オプションをチェックします。

結果として、IntelliJ IDEA は新しいパラメーターと同じ型を持つ変数 d を見つけ、それをメソッド呼び出しで使用します。

public class MyClass { public void myMethod(int value) { } public class MyOtherClass { public void myMethodCall(MyClass myClass) { double d = 0.5; myClass.myMethod(1); } } }
public class MyClass { public void myMethod(int i, double price) { } public class MyOtherClass { public void myMethodCall(MyClass myClass) { double d = 0.5; myClass.myMethod(1, d); } } }

オーバーロードメソッド

メソッド呼び出しを変更しないで、新しいシグネチャーでメソッドを呼び出す新しいオーバーロードメソッドを作成するように IntelliJ IDEA に依頼しましょう。これを実現するには、オーバーロードメソッドによる委譲オプションを使用します。

新しいオーバーロードメソッドには古いシグネチャーがあることに注意してください。ただし、新しいシグネチャーを使用してメソッドを呼び出します。リファクタリングを実行するときに、0.0 がデフォルトのパラメーター値として指定されました。

public class MyClass { public void myMethod(int value) { } public class MyOtherClass { public void myMethodCall(MyClass myClass) { double d = 0.5; myClass.myMethod(1); } } }
public class MyClass { public void myMethod(int i) { myMethod(i, 0.0); } public void myMethod(int i, double price) { } public class MyOtherClass { public void myMethodCall(MyClass myClass) { double d = 0.5; myClass.myMethod(1); } } }

パラメーターの伝播

Propagate parameters Alt+G を、呼び出し元のメソッド myMethodCall() を介してメソッド呼び出しに伝播してみましょう。

その結果、新しいパラメーター price は、呼び出し元のメソッドを介してメソッド呼び出しに伝播し、それに応じてメソッド呼び出しを変更します。

public class MyClass { public void myMethod(int value) { } public class MyOtherClass { public void myMethodCall(MyClass myClass) { double d = 0.5; myClass.myMethod(1); } } }
public class MyClass { public void myMethod(int i, double price) { } public class MyOtherClass { public void myMethodCall(MyClass myClass, double price) { double d = 0.5; myClass.myMethod(1, price); } } }

例外の伝播

クラス MyClass に例外 IOException をスローするメソッド read を追加しましょう。

次に、MyClass を拡張し、元の read メソッドをオーバーライドする新しいクラス ExtendsMyClass を作成しましょう。

今度は MyClass に戻って、このリファクタリングによって TimeOutException などの別の例外を追加すると、メソッド read もサブクラスに更新されます。

public class MyClass { public void read() throws IOException { } public void myMethod(int value) { } public class MyOtherClass { public void myMethodCall(MyClass myClass) { double d = 0.5; myClass.myMethod(1); } } } //Let's create a new class "ExtendsMyClass". public class ExtendsMyClass extends MyClass { @Override public void read() throws IOException { super.read(); } }
public class MyClass { public void read() throws IOException, TimeOutException { } public void myMethod(int value) { } public class MyOtherClass { public void myMethodCall(MyClass myClass) { double d = 0.5; myClass.myMethod(1); } } } //As you see, "TimeOutException" was added. public class ExtendsMyClass extends MyClass { @Override public void read() throws IOException, TimeOutException { super.read(); } }

パラメーターの追加

  1. 赤色でハイライトされている return 値をクリックします。

  2. Alt+Enter を押してパラメーター「<パラメーター名>」を作成しますを選択します。

  3. シグネチャーの変更ダイアログで、パラメーター設定を調整するか、提案された設定を受け入れます。

  4. リファクタリングをクリックします。

シグネチャーの変更ダイアログ

項目

説明

名前

関数、メソッド、メソッド仕様の名前。

パラメーター

シグネチャー内のパラメーターのリスト。パラメーター項目では、パラメーターを使用して以下のアクションを実行することができます。

  • Add The Add icon : 新しいパラメーターを追加します。対応するテーブル行で新しいパラメーターのプロパティ(名前、型、デフォルト値)を指定できます。

  • The Remove icon削除 : パラメーターを削除します。

  • The Up icon およびダウンアップ The Down icon アイコン: パラメーターを並べ替えます。

Java 固有および Scala 固有ダイアログが利用可能です。

関連ページ:

シグネチャーの変更

シグネチャーの変更リファクタリングは、関数シグネチャーに適用できるいくつかの異なる変更を組み合わせます。このリファクタリングを使用して、次のことができます。関数名と戻り値の型を変更する、パラメーターの追加、削除、並べ替え、パラメーターにデフォルト値を割り当てます、パラメーター名と型を変更する、関数呼び出し階層を介して新しいパラメーターを伝播する、ファンクションシグネチャーを変更すると、PhpStorm は関数のすべての使用箇所を検索し、その変更を反映するように安全に変更できる関数のすべての呼び出...

TypeScript のリファクタリング

リファクタリングとは、アプリケーションの動作を変更せずにソースコードを更新することを意味します。リファクタリングは、コードを安定した dry に保ち、保守を容易にできます。移動リファクタリング:IntelliJ IDEA を使用すると、ファイルやフォルダーを移動できるだけでなく、TypeScript の最上位シンボルを移動できます。シンボルの移動リファクタリングは、ES6 モジュールのクラス、関数、変数に対して機能します。クラス、関数、変数を移動する移動するシンボルを選択します。を押すか、メインメ...

JavaScript のリファクタリング

リファクタリングとは、アプリケーションの動作を変更せずにソースコードを更新することを意味します。リファクタリングは、コードを安定した dry に保ち、保守を容易にできます。シンボルの移動リファクタリング:IntelliJ IDEA を使用すると、ファイルやフォルダーを移動できるだけでなく、JavaScript トップレベルシンボルを移動できます。シンボルの移動リファクタリングは、ES6 モジュールのクラス、関数、変数に対して機能します。クラス、関数、変数を移動する移動するシンボルを選択します。を押...

クラスシグネチャーの変更ダイアログ

クラスシグネチャーの変更リファクタリングを実行するには、クラスシグネチャーの変更ダイアログを使用します。使用可能なコントロールを使用して正式型パラメーターを管理します(次の表を参照)。パラメーターの追加と削除、順序の変更ができます。すぐにリファクタリングを実行するには、リファクタリングをクリックします。実際にリファクタリングを実行する前に、プレビューをクリックして潜在的な変更を確認してください。(これらは検索ツールウィンドウに表示されます。) このアイコンまたはショートカットを使用してパラメーター...

コードリファクタリング

リファクタリングは、新しい機能を作成せずにソースコードを改善するプロセスです。リファクタリングは、コードを安定させ、dry に保ち、保守を容易にできます。リファクタリングの呼び出し:リファクタリングするアイテムを選択します。エディターでプロジェクトツールウィンドウまたは式 / シンボルでファイル / フォルダーを選択できます。選択可能なリファクタリングのリストを開くには、を押します。または、特定のリファクタリング用のキーボードショートカットを使用することもできます。フィールドのカプセル化、st...